为什么结果不包括“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')
d.f_date 是否包含时间组件?如果是这样,将返回的唯一记录between
将是那些时间正好是00:00:00 的记录。所有其他将大于 2013-10-14。
比较日期时,假定没有时间分量的日期具有 00:00:00 时间分量
这可能是由其他答案中提到的时间组件问题引起的,但是您还需要更改之间的时间以首先获得最早的日期,否则它将永远不会返回任何内容。
例如
SELECT *
FROM dual
WHERE SYSDATE BETWEEN SYSDATE AND SYSDATE + 1;
将返回 1 条记录,但
SELECT *
FROM dual
WHERE SYSDATE BETWEEN SYSDATE + 1 AND SYSDATE;
将不会。