PDA

View Full Version : [MySQL][phpMyAdmin] Convertire colonna da VARCHAR a DATE


robertino_salemi
08-02-2016, 23:14
Ciao a tutti,
attualmente ho una tabella 'news' contenente una colonna di 'data' di

Tipo > VARCHAR(15)
Null > NO

i record in essa memorizzati sono del tipo 09/02/2015

Vorrei convertire tale colonna senza però perdere i campi già valorizzati.
Se provo a modificare il TIPO tutti vengono settati a 0000-00-00

Come risolvere?

Grazie.

robertino_salemi
09-02-2016, 13:10
Grazie.

Potrei semplicemente
1) creare una colonna di tipo DATE con il nome TMP
2) eseguire l'update con i record della colonna gia' esistente
3) eliminare la colonna esiste
4) rinominare TMP con il nome della vecchia colonna

Vedo di integrare la tua soluzione per il punto 2 cosi da eseguire l'update di tutti i record dalla vecchia colonna di tipo VARCHAR alla nuova di tipo DATE senza ovviamente alterare i valori.

Grazie.

deffe2
10-02-2016, 12:19
magari potresti sfruttare il php modificando la data in yyyy-mm-gg e poi rimettendola facendo un update :)

robertino_salemi
10-02-2016, 12:44
Potrebbe essere un'altra soluzione.

Vedo di testare il tutto e postare qui la strada corretta! :)

robertino_salemi
11-02-2016, 23:51
Risolto, ecco qui la soluzione


ALTER TABLE myTable ADD data_tmp DATE NOT NULL AFTER data

UPDATE myTable SET data_tmp = str_to_date(data, '%d/%m/%Y')

ALTER TABLE myTable DROP data

ALTER TABLE myTable CHANGE data_tmp data DATE NOT NULL



Praticamente ho

1) creata una tabella temporanea DATA_TMP
2) eseguito l'update dei dati secondo lo standard preferito
3) ho cancellato la colonna 'sorgente'
4) ho rinominato la colonna con il suo nome originale

Grazie a tutti.