Oracle之间的日期和?

时间:2013-11-01 08:17:20

标签: sql oracle

为什么结果不包括' 2013-10-14'

select * 
  from table t 
 where t.f_date between to_date('2013-10-20', 'yyyy-mm-dd') and
                        to_date('2013-10-14', 'yyyy-mm-dd')

2 个答案:

答案 0 :(得分:6)

d.f_date是否包含时间组件?如果是,则between将返回的唯一记录将是那些时间正好 00:00:00的记录。 2013-10-14所有其他人都会更大。

比较日期时,假定没有时间组件的日期具有00:00:00时间组件

答案 1 :(得分:1)

这可能是由其他答案中提到的时间组件问题引起的,但是您还需要更改您的介于最早的日期之前,否则它将永远不会返回任何内容。

e.g。

SELECT *
FROM dual
WHERE SYSDATE BETWEEN SYSDATE AND SYSDATE + 1;

将返回1条记录,但

SELECT *
FROM dual
WHERE SYSDATE BETWEEN SYSDATE + 1 AND SYSDATE;

不会。