我有一个表格的查询:
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)