MYSQL - Изменение года дат с 2020 на 2011 - PullRequest
10 голосов
/ 15 декабря 2011

У меня есть несколько дат в формате ГГГГ-ММ-ДД

Но у меня весь год в 2020-ММ-ДД

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

Как мне этого добиться?

Ответы [ 4 ]

13 голосов
/ 15 декабря 2011
UPDATE YourTable
    SET YourDateColumn = SUBDATE(YourDateColumn, INTERVAL 9 YEAR);
5 голосов
/ 15 декабря 2011

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

2 голосов
/ 15 декабря 2011
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 для него !!!

1 голос
/ 25 августа 2015

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

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

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

...