1.推荐使用范围查询,即
SELECT * FROM your_table
WHERE date_column >= TO_DATE('2023-01-31', 'YYYY-MM-DD')
AND date_column < TO_DATE('2023-01-31', 'YYYY-MM-DD') + 1;
这种方法对于任何日期(包括月末、闰年等特殊情况)都是安全可靠的,Oracle会自动处理所有的日期边界问题。
2.另一种需要 在字段上使用函数,可能导致字段索引失效,性能差,不推荐
例如:WHERE TRUNC(date_column) = TO_DATE('2023-06-15', 'YYYY-MM-DD')
3.为什么不推荐使用等号(=)?
-- 不推荐的写法(可能漏掉数据)
SELECT * FROM your_table
WHERE date_column = TO_DATE('2023-06-15', 'YYYY-MM-DD');
问题在于:如果date_column包含时间部分,等号比较只会匹配时间部分为00:00:00的记录。