• Super User

    [MySQL][phpMyAdmin] Convertire colonna da VARCHAR a DATE

    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.


  • User Attivo

    Ciao felino
    io lo farei tramite uno script
    salverei la coppia id-data in un file o in un oggetto, farei una alter sulla tabella e successivamente re importerei i dati. Non so se ci sia una soluzione meno macchinosa


  • Super User

    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

    Il problema riguarda il punto 2, come eseguire l'UPDATE dalla vecchia colonna di tipo VARCHAR alla nuova di tipo DATE senza ovviamente alterare i valori.

    Grazie.


  • Super User

    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.