Добавьте 10 лет в столбец даты для нескольких строк в Oracle - PullRequest
0 голосов
/ 29 октября 2018

Я пытался обновить неверную дату (с 0018 вместо 2018) в некоторых строках таблицы БД Oracle. Поэтому я хотел бы добавить 10 лет для этого. Проблема в том, что дата сейчас все та же. Например, дата может быть 10 июля 0018 или 02 ноября 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 или column» Не могли бы вы помочь мне с этим?

Заранее спасибо

Sebastien

Ответы [ 3 ]

0 голосов
/ 29 октября 2018

Удалить ,'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
)

Кажется, что остались от некоторого изменения вашего заявления ...

0 голосов
/ 29 октября 2018

Вы слишком усложняете вещи.

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, если таковой существует.

0 голосов
/ 29 октября 2018

Почему бы не упростить это?

UPDATE MyTable SET MyDate= add_months(MyDate, 2000 * 12)
where TO_CHAR(MyDate,'YYYY') = 0018
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...