转换为varchar(40)datetime列

我有date列,它的类型是varchar(40) 我想将它转换为datetime转换为varchar(40)datetime列

请让我知道,如果下面的命令是正确转换为datetime

UPDATE `table` 

SET `date` = str_to_date(`date`, '%d-%m-%Y');

该表有成千上万的记录。例如,date具有价值10/21/2016 15:02一条记录

回答:

两件事情:

首先,你STR_TO_DATE()格式必须输入字符串的格式相匹配。如果你的输入字符串是10/21/2016 15:02,那么你的格式是%m/%d/%Y %H:%i

见这里的格式代码的参考:https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_date-format

其次,使用更新不会更改列的数据类型,它只是改变了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 |

+---------------------+

现在它的格式正确,但它仍然是一个varchar。

mysql> alter table t modify v datetime; 

mysql> select * from t;

+---------------------+

| v |

+---------------------+

| 2016-10-21 15:02:00 |

+---------------------+

现在数据类型已更改。

mysql> show create table t\G 

CREATE TABLE `t` (

`v` datetime DEFAULT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4

以上是 转换为varchar(40)datetime列 的全部内容, 来源链接: utcz.com/qa/260604.html

回到顶部