我正在使用以下查询从整个月的视图中检索所有可能的值
select * from report2 where date_from >= TO_DATE('01-July-2014 00:00:00','DD-MM-YYYY
HH24:MI:SS') AND date_from < TO_DATE('31-July-2014 00:00:00','DD-MM-YYYY HH24:MI:SS')
我以为它会检测到所有这些。但是当我运行例如上限日期为2014年8月1日时,我仍然可以看到2014年7月31日的条目,如31/07/2014 00:01:00,这些条目尚未被上一个查询检索到。我怎样才能确保我会检测到所有这些?
答案 0 :(得分:3)
尝试使用日期,直到下个月的黎明,当date_from
以上的指数受益时。
select * from report2 where
date_from >= TO_DATE('01-July-2014','DD-Month-YYYY')
AND date_from < TO_DATE('01-August-2014','DD-Month-YYYY')
或
select * from report2 where TO_CHAR(date_from ,'MON-YYYY') = 'JUL-2014'
如果没有超过date_from
的索引
答案 1 :(得分:1)
我建议您在Oracle中使用DATE
关键字。它使这些代码更容易阅读并使用ISO标准日期格式:
select *
from report2
where date_from >= DATE '2014-07-01' and date_from < DATE '2014-08-01'
您可能会发现更容易将查询视为:
where date_from >= DATE '2014-07-01' and date_from < DATE '2014-07-31' + 1
甚至:
where date_from >= DATE '2014-07-01' and date_from < add_months(DATE '2014-07-01', 1)