我试图在Oracle DB表的某些行中更新一个错误的日期(用0018年而不是2018年)。因此,我想为此增加10年。日期现在仍然相同的问题。例如,日期可以是10-JUL-0018或02-NOV-0018
我尝试了这个,但是没有用:
UPDATE MyTable SET MyDate= add_months(MyDate, 2000 * 12),'DD/MM/YYYY HH24:MI:SS'))
Where MyMainField_ID IN (
SELECT MyMainField_ID
FROM MyTable
where TO_CHAR(MyDate,'YYYY') = 0018
)
我收到此错误:
SQL错误:ORA-01747:无效的user.table.column,table.column或列规范 01747. 00000-“无效的user.table.column,table.column或列规范” 你能帮我吗?
预先感谢
塞巴斯蒂安
答案 0 :(得分:3)
为什么不简化呢?
UPDATE MyTable SET MyDate= add_months(MyDate, 2000 * 12)
where TO_CHAR(MyDate,'YYYY') = 0018
答案 1 :(得分:3)
您太复杂了。
update mytable
set mydate = mydate + interval '2000' year(4)
where mydate < date '0100-01-01'; -- some threshold date for when to apply the update
这可能会利用mydate上的索引(如果存在)。
答案 2 :(得分:1)
删除,'DD/MM/YYYY HH24:MI:SS'))
:
UPDATE MyTable SET MyDate= add_months(MyDate, 2000 * 12)
Where MyMainField_ID IN (
SELECT MyMainField_ID
FROM MyTable
where TO_CHAR(MyDate,'YYYY') = 0018
)
您的陈述的某些更改似乎仍然存在...