我需要一个查询,将动态拉取过去12个月的装运数据(不包括当前月)。因此,由于今天是2016年9月30日,我需要2015年9月1日到2016年8月31日的数据。明天,查询将更改为10-1-15到9-30-16的日期范围。
这是我目前所拥有的:
WHERE (shipdate BETWEEN TRUNC(sysdate, 'Year') AND sysdate)此查询从日历年开始到今天的日期提取数据,而不是前12个完整的月份。我已经用MySQL和MS SQL Server找到了这个问题的答案,但甲骨文找不到。如何在Oracle中实现这一点?
发布于 2016-09-30 23:00:33
between add_months(trunc(sysdate, 'month'), -12) and trunc(sysdate, 'month')如果发货的时间戳实际上是午夜,而发货的时间戳是9月1不应包含在00:00:00,则“介于”应更改为
shipdate >= add_months(trunc(sysdate, 'month'), - 12)
and shipdate < trunc(sysdate, 'month')发布于 2016-09-30 23:11:55
假设您有一个包含日期列表的表,例如过去1000天:
create table tableTest(shipDate) as
(
select trunc(sysdate) - level +1
from dual
connect by level < 1000
)您可以使用以下内容:
select min(shipdate), max(shipdate)
from tableTest
where shipDate between trunc(add_months(sysdate, -12), 'MONTH') and TRUNC(sysdate, 'MONTH') -1https://stackoverflow.com/questions/39794468
复制相似问题