cast(日期为时间戳)比较不正确

时间:2017-01-06 07:31:05

标签: sql oracle timestamp

当我执行此比较时,结果不正确。

select case when cast('06-JAN-17 12.48.14.243000000 PM' as timestamp) > 
            cast('06-JAN-17 08.08.57.000000000 PM' as timestamp) then 1 else 0 end from dual

结果是' 0'而不是' 1'。有人可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:0)

如果您想正确地将字符串转换为TIMESTAMP,则必须使用TO_TIMESTAMP

when TO_TIMESTAMP('06-JAN-17 12.48.14.243000000 PM', 'DD-MON-RR HH.MI.SS.FF PM') > 
            TO_TIMESTAMP('06-JAN-17 08.08.57.000000000 PM', 'DD-MON-RR HH.MI.SS.FF PM') 
  then 1 else 0 end

答案 1 :(得分:-1)

首先需要将文本文字转换为将其强制转换为时间戳之前的日期。我给你举个例子:

aaa, bbb, ccc, ddd, eee, fff, ggg

这可以恢复1。 只需更改您的文字和通过日期格式,您的结果也会有效。