2013-01-24 22 views
19

Ho un sacco di date nel nostro database memorizzate nel tipo di data mysql standard.Modifica anno in data mysql

Come posso coprire un anno al 2013, indipendentemente dalla data originale.

Quindi, se la data è il 01-01-01, sarebbe il 2013-01-01, ma se è il 2012-01-04, si convertirà in 2013-01-14.

ho pensato che sarebbe stato semplice e ovvio, ma non riuscivo a capirlo =/

risposta

46

che è semplice:

per DATETIME:

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

per DATA:

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

Perfetto. Grazie! – Andelas

6
UPDATE tableName 
SET dateColumn = dateColumn + INTERVAL 4 YEAR 

altro modo è quello di concatenare esso,

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

Se la sua un campo data:

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

Se la sua un campo di data e ora:

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

La data di ricerca era il 2013, ho capito che si desidera impostare l'anno corrente in data.

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

Il problema con le risposte attuali è che nessuno di loro prende in considerazione l'anno bisestile. Se prendi la data "2016-02-29" e la converti nell'anno 2013 attraverso la concatenazione, ricevi "2013-02-29", che non è una data valida. Se esegui DATE_FORMAT ('2013-02-29', '% Y-% m-% d') il risultato è null. Vedi un esempio qui:

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

Un modo migliore per cambiare l'anno è quello di utilizzare DATE_ADD dal momento che rappresenta il risparmio di luce del giorno. Per esempio:

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

Si potrebbe sostituire CURRENT_DATE() con '2013-01-01' se ancora voleva convertire tutte le date al 2013 invece che l'anno in corso. Un esempio di questa soluzione è qui:

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