2011-12-14 8 views
10

ho gruppo di date in formato AAAA-MM-GGMYSQL - Modifica anno di date 2020-2011

Ma ho tutto l'anno nel 2020-MM-DD

voglio cambiarlo 2011-MM-DD

Come posso ottenere questo risultato?

+0

Qual è il tipo di dati della colonna in questione? –

+0

Il tipo di dati della colonna è la data – Chinmay

+0

[This] (http://stackoverflow.com/questions/14491906/changing-year-in-mysql-date) uno è la soluzione più semplice –

risposta

13
UPDATE YourTable 
    SET YourDateColumn = SUBDATE(YourDateColumn, INTERVAL 9 YEAR); 
+0

Grazie mille per la risposta. Ho appena provato e in realtà ha aggiunto 1 all'anno che ha reso la mia data dal 2020 al 2021. È la loro qualche funzione per diminuire l'intervallo? – Chinmay

+0

Mi dispiace di aver sbagliato a digitare la mia domanda. In realtà Le mie date sono in formato 2020-MM-DD e voglio convertirlo in 2010-MM-DD. Mi dispiace tantissimo – Chinmay

+1

@ChinmayMurugkar Per andare dal 2020 al 2011, usare 'SUBDATE (YourDateColumn, INTERVAL 9 YEAR)' Ho modificato la risposta per riflettere questo. –

5

USO ADDDATE(old_date, INTERVAL -9 YEAR)

+0

Grazie per la risposta. Scusa se ho sbagliato a digitare la mia domanda. In realtà Le mie date sono in formato 2020-MM-DD e voglio convertirlo in 2010-MM-DD. Mi dispiace molto – Chinmay

+0

Ho modificato la mia risposta per riflettere questo. La risposta è leggermente diversa da @Joe Stefanelli, ma funziona allo stesso modo. – Jason

2
UPDATE YourTable 
SET YourDateColumn = ADDDATE(YourDateColumn, INTERVAL 1 YEAR) 
WHERE YourDateColumn >= '2010-01-01' 
AND YourDateColumn <= '2010-12-31'; 

Se la tabella in basso non ha un indice sul campo della data, si potrebbe ottenere via con questo:

UPDATE YourTable 
SET YourDateColumn = ADDDATE(YourDateColumn, INTERVAL 1 YEAR) 
WHERE YEAR(YourDateColumn) = 2010; 

per risolvere il problema della data con 2020 andando a 2021 esegui questo:

UPDATE YourTable 
SET YourDateColumn = ADDDATE(YourDateColumn, INTERVAL -1 YEAR) 
WHERE YEAR(YourDateColumn) = 2021; 

BTW Da quando ho copiato il codice originale di Joe Stefanelli, +1 per lui !!!

1

vorrei aggiungere (per ulteriori visitatori della domanda) che si può anche "update" positivamente più velocemente che con dichiarazione con la funzione SUBDATE, credo sia abbastanza veloce, mentre per prese aprox. 1 ora per influenzare 2.3 trilioni di righe SUBDATE ha reso la metà del tempo.

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

Dove x è il numero negativo che si desidera aggiungere come nuovo valore dell'anno. Ad essere sincero, ignoro perché questo accade, ma funziona.

Problemi correlati