Oracle where子句将日期值与时间值23:59:59进行比较

时间:2016-11-18 12:29:01

标签: sql oracle date where-clause date-format

以下是我查询记录的查询:

select * from ProductTracker where EventDate >= TO_DATE( '01/01/2016','MM/DD/YYYY') 
                               AND EventDate <= TO_DATE( '11/18/2016','MM/DD/YYYY');

此查询将显示日期01/01/2016至2016年11月18日00:00:00的结果 AS此查询仅在时间为00:00:00时有效。使用MM / DD / YYYY的TO_DATE生成时间为00:00:00的日期。所以我不会得到日期类似于11/18/2016 11:50:00 PM的记录 有什么方法可以得到所有结果?

4 个答案:

答案 0 :(得分:1)

首先,使用ISO标准日期格式。然后你可以这样做:

select pt.*
from ProductTracker pt
where EventDate >= DATE '2016-01-01' AND
      EventDate < (DATE '2016-11-18') + 1

如果您愿意,也可以说+ interval '1' day

答案 1 :(得分:0)

您可以选择日期少于第二天的地方:

select * from ProductTracker 
  where EventDate >= TO_DATE( '01/01/2016','MM/DD/YYYY') 
    AND EventDate < TO_DATE( '12/18/2016','MM/DD/YYYY');

或以格式使用小时:

select * from ProductTracker 
  where EventDate >= TO_DATE( '01/01/2016','MM/DD/YYYY') 
    AND EventDate < TO_DATE( '11/19/2016 00:00','MM/DD/YYYY hh24:mi');

答案 2 :(得分:0)

您可以使用trunc

select * from ProductTracker where trunc(EventDate) >= TO_DATE( '01/01/2016','MM/DD/YYYY') AND trunc(EventDate) <= TO_DATE( '11/18/2016','MM/DD/YYYY')

答案 3 :(得分:0)

以下查询工作正常:

Select * from ProductTracker where
 EventDate >= TO_DATE('01/01/2016','MM/DD/YYYY') 
AND EventDate < TO_DATE( '11/18/2016 23:59:59 ','MM/DD/YYYY hh24:mi:ss');

感谢大家的qiwk回复。