Convertir une colonne VARCHAR en DATETIME sans perdre les données (MySQL)

Voici le code compatible MySQL 5.5 (BDD que j’utilise), en passant par une colonne intermédiaire.

ALTER TABLE pre_reservation ADD date_dem_old VARCHAR(30) NULL DEFAULT NULL AFTER date_demande;

update pre_reservation set date_dem_old = date_demande;

ALTER TABLE pre_reservation MODIFY date_demande DATETIME NOT NULL;

UPDATE pre_reservation set date_demande = CAST( FROM_UNIXTIME( date_dem_old ) AS DATETIME );

ALTER TABLE pre_reservation DROP date_dem_old;

Il est possible de faire la même chose en passant par une table intermédiaire, mais c’est un peu plus complexe de faire matcher les lignes de la table source et de la table intermédiaire lors de l’UPDATE (selon la clé primaire qu’il y a).