查找ORACLE中最后一个季度的第一天和最后一天

fgy*_*ica 6 sql date

我有一个表格的查询:

select *
from X
where <some_date is in the last quarter>
Run Code Online (Sandbox Code Playgroud)

我真的遇到了上一季度正确日期的问题.因此,如果当前日期是7月1日,即第三季度,我希望将4月1日作为FIRST和6月30日作为上一季度(即第二季度)的最后一天.

谷歌搜索了一下,发现了大量的解决方案,但每一个都覆盖了SQL Server,我们的ORACLE数据库(Oracle 10g和11g)上没有可用的时髦方法.

哦是的,而且我还需要能够将整个事情放在一个查询中,因为这是一个限制,通过一些工具可以进一步使用此查询...:/

And*_*y M 12

这个更简单,但可能仍然不是最简单的方法:

SELECT
  ADD_MONTHS(TRUNC(SYSDATE, 'Q'), -3) AS First,
  TRUNC(SYSDATE, 'Q') - 1 AS Last
FROM DUAL
Run Code Online (Sandbox Code Playgroud)

也许你也可以使用像这样的子选择来排除一些重复的代码:

SELECT
  ADD_MONTHS(D, -3) AS First,
  D - 1 AS Last
FROM (SELECT TRUNC(SYSDATE, 'Q') AS D FROM DUAL)
Run Code Online (Sandbox Code Playgroud)