Ответ 1
UPDATE YourTable
SET YourDateColumn = SUBDATE(YourDateColumn, INTERVAL 9 YEAR);
У меня есть набор дат в формате YYYY-MM-DD
Но у меня есть весь год в 2020 году-MM-DD
Я хочу изменить его на 2011-MM-DD
Как я могу это достичь?
UPDATE YourTable
SET YourDateColumn = SUBDATE(YourDateColumn, INTERVAL 9 YEAR);
ИСПОЛЬЗОВАТЬ ADDDATE(old_date, INTERVAL -9 YEAR)
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 для него!!!
Я хотел бы добавить (для других посетителей вопроса), что вы можете "обновить" положительно быстрее, чем с помощью инструкции ADDDATE
с помощью функции SUBDATE
, я думаю, что это значительно быстрее, а до ADDDATE
взял это aprox. 1 час, чтобы повлиять на 2,3 трлн строк SUBDATE
, сделал это в половине случаев.
UPDATE Table SET DateTimeField = SUBDATE(DateTimeField, INTERVAL -x YEAR);
Где x - отрицательное число, которое вы хотите добавить в качестве значения нового года. Честно говоря, я игнорирую, почему это происходит, но оно работает.