Oracle:where子句日期查询问题



环境:oracle数据库

我有一个列名为DateOfAct的表,该表属于Date数据类型,包含日期&时间(例如:2015-10-28 21:21:10,2015-10-29 11:09:45)

我需要获取当天的记录20-12-2015从早上12:00:0到晚上23:59:59

 select * from my_table 
 where DateOfAct >= to_date('20-12-2015 00:00:00' , 'dd-mm-yyyy 24HH:MI:SS')
 and   DateOfAct <= to_date('20-12-2015 23:59:59', 'dd-mm-yyyy 24HH:MI:SS')

下面的代码应该可以解决您的问题:在日期格式中,放入'HH24'而不是'24HH'

 select * from my_table 
 where DateOfAct >= to_date('20-12-2015 00:00:00' , 'dd-mm-yyyy HH24:MI:SS')
 and   DateOfAct <= to_date('20-12-2015 23:59:59', 'dd-mm-yyyy HH24:MI:SS')

不理解这里的任何问题。。但是你可以用between试试这个。

select * 
from my_table 
where DateOfAct between to_date('20151220000000','YYYYMMDDHH24MISS') 
      and to_date('20151220235959','YYYYMMDDHH24MISS');

从早上12:00:00到晚上23:59:59

在您的查询开始日期是to_date('20-12-2015 00:00:00' , 'dd-mm-yyyy 24HH:MI:SS')-00:00(HH24:mi),如果您希望12:00(HH24:mi)应该是to_date('20-12-2015 12:00:00' , 'dd-mm-yyyy HH24:MI:SS')

select * 
  from my_table 
 where DateOfAct between to_date('20-12-2015 12:00:00', 'dd-mm-yyyy HH24:MI:SS') 
                     and to_date('20-12-2015 23:59:59', 'dd-mm-yyyy HH24:MI:SS')

查询可以像一样更改

select * from my_table where trunc(DateOfAct)='20-Dec-2015'

说明:

函数trunc从日期中删除时间部分,并允许您只比较日期值而不比较时间。

最新更新