【发布时间】:2012-12-19 17:15:42
【问题描述】:
以下是我抛出错误的 Oracle 更新查询--
更新表 Set col1 = To_date(:dateFill, 'mm/dd/yyyy hh24:mi:ss') 其中 Fil1 = :ID;
dateFill = 01/05/2012, ID= 15
这个语句在一个过程中执行,
错误 -:ORA-01722: 无效号码(日期字段)
谁能告诉我为什么'select To_date('01/05/2012 00:00:00', 'mm/dd/yyyy hh24:mi:ss') from dual;'给我像'05-JAN-2012 00:00:00'这样的结果。???
请给我一些答案。
【问题讨论】:
-
“Fil1”列的表数据类型是什么,它真的是 varchar2 吗?以及您定义的数据类型 :ID 是我假设的数字吗?
-
这里的'Fil1'或'ID'没有问题,日期值有问题。Fil1是varchar2,'ID'是varchar2的变量。
-
你说它在一个过程中运行,向我们展示你是如何绑定值的(dbms_sql/execute immediate),因为“:id”只有在我们谈论动态 sql 时才有效。还有你怎么知道日期部分的错误?
-
不确定您是否注意到您的日期格式为
'mm/dd/yyyy',它将'01/05/2012'解释为January 5, 2012。这就是为什么你的结果是'05-JAN-2012...'。
标签: oracle10g