以下是我的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'。???
请给我一些答案。
答案 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数据类型。 Cast
或convert
此'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>