我有以下形式的查询:
select * from X where <some_date is in the last quarter>
我很难确定上个季度的正确日期。因此,假设当前日期是 7月1日 ,即第三季度,我想将 4月1日 作为FIRST,将 6月30日 作为最后 一个季度 (即第二季度)的最后一天。
谷歌搜索了一下,找到了很多解决方案,但是每个解决方案都涵盖了SQL Server和可用的时髦方法,在我们的ORACLE数据库(Oracle10g和11g)上不可用。
哦,是的,我还需要能够将整个内容放入一个查询中,因为这是某些工具的限制,它将进一步处理该查询…:/
这是比较简单的方法,但可能仍然不是最简单的方法:
SELECT ADD_MONTHS(TRUNC(SYSDATE, 'Q'), -3) AS First, TRUNC(SYSDATE, 'Q') - 1 AS Last FROM DUAL
也许您也可以使用子选择,例如这样,以排除某些重复代码:
SELECT ADD_MONTHS(D, -3) AS First, D - 1 AS Last FROM (SELECT TRUNC(SYSDATE, 'Q') AS D FROM DUAL)