我想写一个查询,显示2010年4月1日到2011年4月1日之间的数据。
但我不想硬编年份。它应该从系统日期开始,因此它只显示从今年4月到明年4月的记录。
提前感谢您的帮助。
答案 0 :(得分:0)
select add_months( trunc(sysdate,'YYYY'), -12 )
+ interval '4' month
+ level
- 1
from dual
connect by level <= ( (trunc(sysdate,'YYYY')
+ interval '4' month) -
(add_months( trunc( sysdate, 'YYYY' ), -12 )
+ interval '4' month) )
应该有效。您可以简化计算行数的表达式,但我必须考虑闰年几分钟。
答案 1 :(得分:0)
如果日期列没有时间组件:
select ...
from mytable
where datecol between add_months(trunc(sysdate,'YYYY'),3)
and add_months(trunc(sysdate,'YYYY'),16)-1
如果日期列有时间组件:
select ...
from mytable
where datecol >= add_months(trunc(sysdate,'YYYY'),3)
and datecol < add_months(trunc(sysdate,'YYYY'),16)
答案 2 :(得分:0)
您的查询应该是这样的
SELECT * 来自youtable WHERE datecolumn BETWEEN to_char(sysdate,'yyyy')+'0401'AND_char(sysdate,'yyyy')+'0430'