获取SQL错误:ORA-01849:小时必须介于1到12之间

时间:2016-07-25 05:32:57

标签: 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('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"

请指导我这个

1 个答案:

答案 0 :(得分:2)

您的原始方法存在一些问题。首先,由于您尝试将日期存储到DT_MODIFIED列,因此您应该使用TO_DATETO_TIMESTAMP,而不是TO_CHARTO_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';