Подтвердить что ты не робот

Изменение года в mysql date

У меня есть куча дат в нашей базе данных, хранящихся в стандартном типе даты mysql.

Как я могу скрыть год до 2013 года, независимо от исходной даты.

Итак, если дата 2009-01-01, это будет 2013-01-01, но если это 2012-01-04, она будет конвертироваться в 2013-01-14.

Я понял, что это будет просто и очевидно, но я не мог понять это =/

4b9b3361

Ответ 1

Это просто:

для DATETIME:

UPDATE table_name
SET date_col=DATE_FORMAT(date_col,'2013-%m-%d %T');

для DATE:

UPDATE table_name
SET date_col=DATE_FORMAT(date_col,'2013-%m-%d');

Ответ 2

Проблема с текущими ответами заключается в том, что ни один из них не учитывает високосный год. Если вы берете дату "2016-02-29" и конвертируете ее в 2013 год через конкатенацию, вы получаете "2013-02-29", что не является допустимой датой. Если вы запустите DATE_FORMAT ('2013-02-29', '% Y-% m-% d'), результат будет null. Пример:

http://sqlfiddle.com/#!9/c5358/11

Лучший способ изменить год - использовать DATE_ADD, поскольку он учитывает переход на летнее время. Например:

SELECT
DATE_FORMAT(DATE_ADD(datecol, INTERVAL (YEAR(CURRENT_DATE()) - YEAR(datecol)) YEAR), '%Y-%m-%d') `date`
FROM t;

Вы можете заменить CURRENT_DATE() на "2013-01-01", если вы все еще хотите преобразовать все даты в 2013 году вместо текущего года. Пример этого решения:

http://sqlfiddle.com/#!9/c5358/12

Ответ 3

UPDATE tableName
SET    dateColumn = dateColumn + INTERVAL 4 YEAR

другой способ заключается в его конкатенации,

UPDATE Table1
SET    DateColumn = CONCAT(YEAR(CURDATE()), '-', DATE_FORMAT(dateColumn, '%m-%d'))

Ответ 4

Если это поле даты:

  UPDATE table_name SET date_field_name = CONCAT("2013", RIGHT(date_field_name,6));

Если это поле даты даты:

UPDATE table_name SET date_field_name = CONCAT("2013", RIGHT(date_field_name,15));

Ответ 5

Текущая дата из квеста была в 2013 году, я понимаю, что вы хотите установить текущий ГОД в дату.

UPDATE table_name SET date_col=DATE_FORMAT('2013-05-06',YEAR(CURRENT_DATE)-%m-%d);

Ответ 6

Как я могу изменить год с текущей датой и месяцем, например: 01101997 он должен отображать только месяц и дату с текущим годом 01102019 он должен отображать только дату и месяц?? какой код использовать в php или mysql, помогите мне