Oracle:更新表中的日期列

时间:2012-12-19 17:15:43

标签: oracle10g

以下是我的oracle更新查询,即抛出错误 -

更新表设置col1 = To_date(:dateFill,'mm / dd / yyyy hh24:mi:ss')其中Fil1 =:ID;

dateFill = 01/05/2012,   ID = 15

此语句正在程序中执行,

错误 - :ORA-01722:无效的数字(日期字段)

有人可以告诉我为什么'选择To_date('01 / 05/2012 00:00:00','mm / dd / yyyy hh24:mi:ss')来自双重;'给我的结果像'05 -JAN-2012 00:00:00'。???

请给我一些答案。

4 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

尝试将字符串转换为数字时,会发生ORA-01722错误,并且无法将字符串转换为有效数字。有效数字包含数字'0'到'9',可能有一个小数点,字符串开头或结尾的符号(+或 - ),或'E'或'e'(如果它是浮点数)科学记数法中的点数)。

答案 2 :(得分:0)

to_date始终使用'character'即

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

您的变量'dateFill'是Number数据类型。 Castconvert此'dateFill' 将字段转换为varchar并且事情会有效。

答案 3 :(得分:0)

  

有人可以告诉我为什么'选择To_date('01 / 05/2012 00:00:00',   'mm / dd / yyyy hh24:mi:ss')来自双重;'给我结果像   '05 -JAN-2012 00:00:00'。???

日期显示的方式是您的客户/ Nls日期格式设置:

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>