sql >> Databáze >  >> RDS >> Mysql

Převeďte varchar(40) na sloupec datetime

Dvě věci:

Za prvé, váš formát str_to_date() musí odpovídat formátu vstupního řetězce. Pokud je váš vstupní řetězec 10/21/2016 15:02 , pak je váš formát %m/%d/%Y %H:%i .

Odkaz na kódy formátu naleznete zde:https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_date-format

Za druhé, použití UPDATE nezmění datový typ sloupce, pouze změní obsah řetězce 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 |
+---------------------+

Nyní je ve správném formátu, ale stále je to varchar.

mysql> alter table t modify v datetime;

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

Nyní byl datový typ změněn.

mysql> show create table t\G

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



  1. Efektivní způsob, jak simulovat úplné vnější spojení v MySQL?

  2. Získejte první den v týdnu na serveru SQL

  3. rekurzivně zploštit vnořený jsonb v postgresu bez neznámé hloubky a neznámých klíčových polí

  4. Vyplnění výběrového vstupního pole hodnotou z mysql