sql中的日期范围

时间:2011-06-19 05:01:49

标签: sql oracle11g

我想写一个查询,显示2010年4月1日到2011年4月1日之间的数据。

但我不想硬编年份。它应该从系统日期开始,因此它只显示从今年4月到明年4月的记录。

提前感谢您的帮助。

3 个答案:

答案 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'