队 我在SQL DATE遇到了一个问题。
我有一份X_RECEIVED_DATE = 1/1/753。
我正在尝试更新该字段,如下所示
update table_contract set x_received_date=
to_date(TO_CHAR(X_RECEIVED_DATE-24/24,'mm/dd/yy hh:mi:ss PM')) where objid=268865360
即时通讯尝试使用此更新字段,但它正在抛出并出错 “ORA-01843:不是有效月份”
请帮助我,并提供一些快速的想法
答案 0 :(得分:1)
所以这就是你似乎在做的事情:
24/24
)我的猜测是数据库在尝试解析日期时无法推断格式。但是没有必要将它转换为我能看到的字符串并返回。
你应该能够做到:
UPDATE table_contract
SET x_received_date = x_received_date-1
WHERE objid=268865360
根据您的评论,您试图表明解析具有两位数年份的日期不会为您提供原始日期。如果是这种情况,则只需在解析时指定日期格式:
to_date(
TO_CHAR(X_RECEIVED_DATE-24/24
,'mm/dd/yy hh:mi:ss PM')
,'mm/dd/yy hh:mi:ss PM')
答案 1 :(得分:0)
从date
字段中减去一个整数会得到date
- 没有理由将其转换为char
,然后再转回date
:< / p>
UPDATE table_contract
SET x_received_date = X_RECEIVED_DATE - 24/24
WHERE objid = 268865360