MYSQL - Изменение года с 2020 по 2011 год

У меня есть набор дат в формате YYYY-MM-DD

Но у меня есть весь год в 2020 году-MM-DD

Я хочу изменить его на 2011-MM-DD

Как я могу это достичь?

Ответ 1

UPDATE YourTable
    SET YourDateColumn = SUBDATE(YourDateColumn, INTERVAL 9 YEAR);

Ответ 2

ИСПОЛЬЗОВАТЬ ADDDATE(old_date, INTERVAL -9 YEAR)

Ответ 3

UPDATE YourTable 
SET YourDateColumn = ADDDATE(YourDateColumn, INTERVAL 1 YEAR)
WHERE YourDateColumn >= '2010-01-01'
AND YourDateColumn <= '2010-12-31'; 

Если ваша таблица не имеет индекса в поле даты, вы можете уйти от этого:

UPDATE YourTable 
SET YourDateColumn = ADDDATE(YourDateColumn, INTERVAL 1 YEAR)
WHERE YEAR(YourDateColumn) = 2010;

Чтобы исправить вашу проблему с датой 2020 до 2021, запустите это:

UPDATE YourTable 
SET YourDateColumn = ADDDATE(YourDateColumn, INTERVAL -1 YEAR)
WHERE YEAR(YourDateColumn) = 2021;

Кстати, я скопировал оригинальный код Джо Стефанелли, +1 для него!!!

Ответ 4

Я хотел бы добавить (для других посетителей вопроса), что вы можете "обновить" положительно быстрее, чем с помощью инструкции ADDDATE с помощью функции SUBDATE, я думаю, что это значительно быстрее, а до ADDDATE взял это aprox. 1 час, чтобы повлиять на 2,3 трлн строк SUBDATE, сделал это в половине случаев.

UPDATE Table SET DateTimeField = SUBDATE(DateTimeField, INTERVAL -x YEAR);

Где x - отрицательное число, которое вы хотите добавить в качестве значения нового года. Честно говоря, я игнорирую, почему это происходит, но оно работает.