为什么这会失败Q.

时间:2013-06-06 18:45:28

标签: sql oracle10g

我正在运行一个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

2 个答案:

答案 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返回字符串,因此您要比较字符串,而不是日期。所以他们按字母顺序进行比较。