获取SQL错误:ORA-01849:小时必须介于1和12之间
对于一个表,我必须更新列DT_MODIFIED TIMESTAMP(6)的日期,并且在运行脚本时,iam出现以下错误获取SQL错误:ORA-01849:小时必须介于1和12之间,sql,oracle11g,Sql,Oracle11g,对于一个表,我必须更新列DT_MODIFIED TIMESTAMP(6)的日期,并且在运行脚本时,iam出现以下错误 update table1 set dt_modified=to_char('01Feb2016 20:04:08.000') where dt_stamp='XXXXX' and xcolumn=’YYYY’; Error starting at line 6 in command: update table1 set dt_modified=to_char('01Feb20
update table1 set dt_modified=to_char('01Feb2016 20:04:08.000') where dt_stamp='XXXXX' and xcolumn=’YYYY’;
Error starting at line 6 in command:
update table1 set dt_modified=to_char('01Feb2016 20:04:08.000') where dt_stamp='XXXXX' and xcolumn=’YYYY’;
Error report:
SQL Error: ORA-01849: hour must be between 1 and 12
01849. 00000 - "hour must be between 1 and 12"
请在这方面指导我您最初的方法有几个问题。首先,由于您试图将日期存储到
DT\u MODIFIED
列中,因此应该使用to\u date
或to\u TIMESTAMP
,而不是to\u CHAR
TO_CHAR
将日期转换为字符串,但您希望执行与此完全相反的操作
其次,如果您想使用24小时制,则需要通过传递格式字符串明确地告诉Oracle这一点。请尝试以下查询:
UPDATE table1
SET dt_modified = TO_TIMESTAMP('01Feb2016 20:04:08.000', 'ddmonyyyy hh24:mi:ss.ff3')
WHERE dt_stamp = 'XXXXX' AND xcolumn = 'YYYY';
在您的建议之后,我收到错误ORA-01722:无效number@developer您应该使用
来表示日期
或来表示时间戳
,而不是来表示字符
。