我需要一些关于此查询的帮助:
update MSG_TRACE set MSG_SENT_STATUS = 'INIT',ERROR_CODE = 0,RETRY_COUNT = 0 where MSG_RECEIVED_TIME >= '16-01-2012 00:00:00,000000' and OPER_TXN_ID like 'CAP%' and MSG_SENT_STATUS in ('FAILED','ERROR');
它给了我这个错误: ORA-01843:不是有效月份
MSG_RECEIVED_TIME的格式为DD / MM / YYYY HH:MM:SS.mmmmmm 像16/01/2012 02:46:34.729643 PM
非常感谢你
答案 0 :(得分:2)
毫秒部分表示它不是日期。您需要转换为时间戳,例如:
select to_timestamp('16-01-2012 00:00:00,000000','dd-mm-yyyy hh24:mi:ss,FF')
from dual
如果您需要它作为日期格式,那么您可以进一步投射:
select to_date(
to_char(
to_timestamp('16-01-2012 00:00:00,000000'
,'dd-mm-yyyy hh24:mi:ss,FF')
,'dd-mm-yyyy hh24:mi:ss')
,'dd-mm-yyyy hh24:mi:ss')
from dual
答案 1 :(得分:0)
您的数据库配置为MM/DD/YYYY
因此16/01/2012无效,因为没有16个月。你有三个选择:
答案 2 :(得分:0)
'01-16-2012 00:00:00,000000'
不正确...尝试使用'16-01-2012 00:00:00'
你的日期也不错......
ORA-01843: not a valid month
错误即将到来,因为您将月份设置为16
,这是错误的...
时间戳中的日期格式如下
DD/MM/YYYY HH:MM:SS:MM