sql >> Databasteknik >  >> RDS >> Mysql

Konvertera varchar(40) till kolumnen datetime

Två saker:

Först måste ditt str_to_date()-format matcha formatet för inmatningssträngen. Om din inmatningssträng är 10/21/2016 15:02 , då är ditt format %m/%d/%Y %H:%i .

Se en referens för formatkoderna här:https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_date-format

För det andra, att använda UPDATE ändrar inte datatypen för kolumnen, det ändrar bara innehållet i varchar-strängen.

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 |
+---------------------+

Nu är det i rätt format, men det är fortfarande en varchar.

mysql> alter table t modify v datetime;

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

Nu har datatypen ändrats.

mysql> show create table t\G

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



  1. Databasbackups - Jämför MariaDB Mariabackup och Percona Xtrabackup

  2. Hur förhindrar man att max_user_connections överskrids vid omladdning/uppdatering av sidan flera gånger?

  3. Skapa tabell - SQL-fel:ORA-00905:nyckelord saknas

  4. Bästa metoder för bitflaggor i PHP