sql >> Database >  >> RDS >> Mysql

Converteer varchar(40) naar datetime-kolom

Twee dingen:

Ten eerste moet uw str_to_date()-indeling overeenkomen met de indeling van de invoertekenreeks. Als uw invoerreeks 10/21/2016 15:02 . is , dan is uw formaat %m/%d/%Y %H:%i .

Zie hier een referentie voor de formaatcodes:https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_date-format

Ten tweede verandert het gebruik van UPDATE het gegevenstype van de kolom niet, het verandert alleen de inhoud van de varchar-tekenreeks.

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 is het in het juiste formaat, maar het is nog steeds een varchar.

mysql> alter table t modify v datetime;

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

Nu is het gegevenstype gewijzigd.

mysql> show create table t\G

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



  1. Duplicatie met SUM, LEFT JOIN en GROUP BY

  2. Inleiding tot het ER-gegevensmodel

  3. Wat is de juiste manier om de node.js postgresql-module te gebruiken?

  4. Fix "ERROR: elke BEHALVE query moet hetzelfde aantal kolommen hebben" in PostgreSQL