我正在运行一个SQL语句来创建一个字段,我得到了所需的结果:
TO_CHAR(TRUNC(CURRENT_DATE - 8/24,'hh24'), 'DD-Mon-yyyy hh24:mi') AS "DATEVAR"
当我将它添加到SQL中的where语句时,我得到的结果是正确的时间段但不是MMDDYY范围。是什么给了什么?
WHERE
TO_CHAR(MOPACTIVITY.MOPEND, 'dd-mon-yyyy hh24:mi:') < TO_CHAR(TRUNC(CURRENT_DATE - 8/24,'hh24'), 'DD-Mon-yyyy hh24:mi')
天才非常感谢。
此致,
Jonathan Morningstar
答案 0 :(得分:3)
您正在使用“&lt;”进行比较dd-mon-yyyy
。当然范围是关闭的。如果您想将它们作为字符串进行比较,请使用yyyy-mm-dd
:
WHERE TO_CHAR(MOPACTIVITY.MOPEND, 'yyyy-mm-dd hh24:mi:') < TO_CHAR(TRUNC(CURRENT_DATE - 8/24,'hh24'), 'yyyy-mm-dd hh24:mi')
将这些作为日期进行比较会不会更容易?
where MOPACTIVITY < TRUNC(CURRENT_DATE - 8/24)
答案 1 :(得分:2)
to_char返回字符串,因此您要比较字符串,而不是日期。所以他们按字母顺序进行比较。