在Oracle的几行的日期列中添加10年

时间:2018-10-29 11:28:11

标签: oracle date

我试图在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或列规范” 你能帮我吗?

预先感谢

塞巴斯蒂安

3 个答案:

答案 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
)

您的陈述的某些更改似乎仍然存在...