我在我們的數據庫中存儲了一堆日期,存儲在標準的mysql日期類型中。在mysql日期中更改年份
無論原始日期如何,我如何隱藏一年到2013年。
所以如果一個日期是2009-01-01這將是2013-01-01,但如果它是2012-01-04,它會轉換爲2013-01-14。
我想這會是簡單而明顯的,但我無法弄清楚=/
我在我們的數據庫中存儲了一堆日期,存儲在標準的mysql日期類型中。在mysql日期中更改年份
無論原始日期如何,我如何隱藏一年到2013年。
所以如果一個日期是2009-01-01這將是2013-01-01,但如果它是2012-01-04,它會轉換爲2013-01-14。
我想這會是簡單而明顯的,但我無法弄清楚=/
這很簡單:
爲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');
UPDATE tableName
SET dateColumn = dateColumn + INTERVAL 4 YEAR
其他的方式是連接它,
UPDATE Table1
SET DateColumn = CONCAT(YEAR(CURDATE()), '-', DATE_FORMAT(dateColumn, '%m-%d'))
如果它的日期字段:
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));
從尋求當前日期是2013年,我明白,你想設置當前年份日期。
UPDATE table_name SET date_col=DATE_FORMAT('2013-05-06',YEAR(CURRENT_DATE)-%m-%d);
目前答案的問題是,他們都沒有考慮閏年。如果您採用日期「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;
你可以替換與「2013-01-01」 CURRENT_DATE(),如果你仍然希望所有日期轉換爲2013,而不是當前的年份。這種解決方案的一個例子是在這裏:
完美。謝謝! – Andelas