【发布时间】:2014-03-11 21:26:37
【问题描述】:
我有一个带有 where 子句的函数式 select 语句,在 where 子句中有一个类似这样的语句...
to_date(camp.start_date, 'MM/DD/YYYY') >= to_date(:from_date, 'YYYY-MM-DD HH24:MI:SS')
但是,如果 camp.start_date 为 NULL 或没有行,那么它会引发异常 -
ORA-01858:在数字所在的位置发现了一个非数字字符 预计
camp.start_date 实际上是一个 VARCHAR2,我需要将其转换为日期,(是的,我知道它可能应该是一个日期字段,但我没有选项来更改它)。
我尝试过这样的事情......
to_date(NVL(camp.start_date,SYSDATE), 'MM/DD/YYYY') >=
to_date(:from_date, 'YYYY-MM-DD HH24:MI:SS')
这仍然给我一个错误。也试过了
camp.start_date 不为空并且 to_date(camp.start_date, 'MM/DD/YYYY') >= to_date(:from_date, 'YYYY-MM-DD HH24:MI:SS')
同样的问题。解决这个问题的最佳方法是什么?当 camp.start_date 不是有效日期时,基本上 to_date 会爆炸并引发错误。
【问题讨论】:
-
由于某种原因,这在 db_visualizer 中是可以的,但使用 Rails 会引发错误?
标签: sql oracle date datetime to-date