为什么结果不包括'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 时间部分
这可能是由其他答案中提到的时间组件问题引起的,但是您还需要将 between 更改为最早的日期,否则它将永远不会返回任何内容。
例如
SELECT *
FROM dual
WHERE SYSDATE BETWEEN SYSDATE AND SYSDATE + 1;
将返回 1 条记录,但
SELECT *
FROM dual
WHERE SYSDATE BETWEEN SYSDATE + 1 AND SYSDATE;
不会。