0

以下是我抛出错误的 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'这样的结果。???

请给我一些答案。

4

4 回答 4

1

如果 dateFill = 01/05/2012,为什么要指定包含“hh24:mi:ss”的日期格式?

于 2012-12-19T17:22:00.283 回答
1

尝试将字符串转换为数字时出现 ORA-01722 错误,但无法将字符串转换为有效数字。有效数字包含数字“0”到“9”,可能有一个小数点,字符串开头或结尾的符号(+ 或 -),或者“E”或“e”(如果它是浮点数)科学计数法中的点数)。

于 2012-12-19T17:23:36.380 回答
0

to_date 始终与“字符”一起使用,即

to_date(char[,'format'[,nls_lang])

您的变量'dateFill'是数字数据类型。Cast或者convert这个 'dateFill' 字段到 varchar 中,一切都会奏效。

于 2012-12-19T17:27:24.787 回答
0

Can someone tell me why is 'select To_date('01/05/2012 00:00:00', 'mm/dd/yyyy hh24:mi:ss') from dual;' giving me result like '05-JAN-2012 00:00:00'.???

how a date displays is down to your client / Nls date format setting:

SQL> select To_date('01/05/2012 00:00:00','mm/dd/yyyy hh24:mi:ss') from dual;

TO_DATE('01/05/20120
--------------------
05-jan-2012 00:00:00

SQL> alter session set nls_date_format='mm/dd/yyyy hh24:mi:ss';

Session altered.

SQL> select To_date('01/05/2012 00:00:00','mm/dd/yyyy hh24:mi:ss') from dual;

TO_DATE('01/05/2012
-------------------
01/05/2012 00:00:00

SQL>
于 2012-12-19T17:48:38.083 回答