0

为什么结果不包括“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')
4

2 回答 2

6

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

比较日期时,假定没有时间分量的日期具有 00:00:00 时间分量

于 2013-11-01T08:20:54.230 回答
1

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

例如

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

将返回 1 条记录,但

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

将不会。

于 2013-11-01T10:33:17.967 回答