ALTER TABLE sujet ADD tmpswap DATETIME; UPDATE sujet SET tmpswap = FROM_UNIXTIME(ancien); ALTER TABLE sujet DROP ancien; ALTER TABLE sujet CHANGE tmpswap ancien DATETIME;
(sujet : nom de la table ; ancien : nom de la colonne initialement en (big)int)
ALTER TABLE sujet ADD tmpswap DATE; UPDATE sujet SET tmpswap = STR_TO_DATE(ancien, '%d/%m/%Y'); ALTER TABLE sujet DROP ancien; ALTER TABLE sujet CHANGE tmpswap ancien DATE;
(sujet : nom de la table ; ancien : nom de la colonne initialement en varchar)
Pourquoi utiliser le type DATE ?
On peut aisément remplacer un CASE comme celui-ci :
SELECT CASE <in> WHEN 'FT' THEN 'Fiche Technique' WHEN 'PV' THEN 'Procès Verbal' WHEN 'NF' THEN 'Norme' ELSE 'Valeur par défaut' END;
Par :
COALESCE( ELT( FIELD(<in>, 'FT', 'PV', 'NF'), 'Fiche Technique', 'Procès Verbal', 'Norme' ), 'valeur par défaut' )
C'est l'"équivalent" PHP de :
$out = str_replace(array('FT', 'PV', 'NF'), array('Fiche Technique', 'Procès Verbal', 'Norme'), $in); # ou, mieux : $out = ['FT' => 'Fiche Technique', 'Procès Verbal', 'NF' => 'Norme'][$in];
Par contre : ça revient éventuellement à "réinventer" le type ENUM
SET FOREIGN_KEY_CHECKS=0; -- les différentes opérations sql à exécuter en ignorant les clés étrangères SET FOREIGN_KEY_CHECKS=1;