Mysql
 sql >> Base de données >  >> RDS >> Mysql

Convertir varchar(40) en colonne datetime

Deux choses :

Tout d'abord, votre format str_to_date() doit correspondre au format de la chaîne d'entrée. Si votre chaîne d'entrée est 10/21/2016 15:02 , alors votre format est %m/%d/%Y %H:%i .

Voir une référence pour les codes de format ici :https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_date-format

Deuxièmement, l'utilisation de UPDATE ne modifie pas le type de données de la colonne, elle modifie simplement le contenu de la chaîne varchar.

mysql> create table t (v varchar(50));

mysql> insert into t values ('10/21/2016 15:02');

mysql> update t set v = str_to_date(v, '%m/%d/%Y %H:%i');

mysql> select * from t;
+---------------------+
| v                   |
+---------------------+
| 2016-10-21 15:02:00 |
+---------------------+

Maintenant, c'est dans le bon format, mais c'est toujours un varchar.

mysql> alter table t modify v datetime;

mysql> select * from t;
+---------------------+
| v                   |
+---------------------+
| 2016-10-21 15:02:00 |
+---------------------+

Maintenant, le type de données a été modifié.

mysql> show create table t\G

CREATE TABLE `t` (
  `v` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4