我的查询类似于:
SELECT STUFF
FROM TABLENAME
WHERE TO_CHAR(STARTDATE, 'DD-MON-YYYY') > '01-OCT-2015'
我的结果集包含STARTDATE
,所有这些都小于'01 -OCT-2015'
我做错了什么?非常感谢!
答案 0 :(得分:1)
建议在这种情况下比较日期而不是字符串
如果比较字符串,查询必须将表格相关列中的所有日期转换为字符串,而不是将单个字符串转换为日期。
这样就可以正确比较日期,无论打印格式如何
SELECT STUFF
FROM TABLENAME
WHERE STARTDATE > to_date('01-OCT-2015 00:00:00' , 'DD-MON-YYYY HH24:MI:SS')
您可以尝试查询:
select to_date('01-OCT-2015 00:00:00' , 'DD-MON-YYYY HH24:MI:SS') from dual;
在继续主查询
之前检查结果是否符合预期答案 1 :(得分:0)
这会将日期作为字符串进行比较,这将按字母顺序排序。如果您想将它们作为字符串进行比较,则应使用格式' YYYY-MM-DD'这将按字母顺序正确排序。 请注意,' MM'是月份作为零填充整数,而不是月份缩写。
答案 2 :(得分:-1)
SELECT STUFF
FROM TABLENAME
WHERE to_date( STARTDATE, 'DD-Mon-YYYY' ) > to_date( '01-Oct-2015', 'DD-Mon-YYYY' );