我有一个以下形式的查询:
select *
from X
where <some_date is in the last quarter>
我在获取上个季度的正确日期方面确实遇到了麻烦。因此,假设当前日期是 7 月 1 日,即在第三季度,我希望将 4 月 1 日作为 FIRST,将 6 月 30 日作为第一 作为最后一个季度(即第二季度)的最后一天。
在 Google 上搜索了一下,找到了大量这方面的解决方案,但每个解决方案都涉及 SQL Server,并且其中可用的时髦方法在我们的 ORACLE 数据库(Oracle 10g 和 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)
关于sql - 在 ORACLE 中查找上季度的第一天和最后一天,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7348226/