在mysql数据库中,列名已创建。这个“创建”列是文本数据类型,我需要将其更改为日期时间。现在该列有这么多数据。是否可以转换它或?
数据库看起来像
created
18-11-15 18:21:25
预期输出为
created
2018-11-15 18:21:25
我什么时候做
ALTER TABLE invoices MODIFY created datetime
此查询给出错误的数据。它从 15-09-18 03:03:43 转换为 2015-09-18 03:03:43
最佳答案
如果原始数据不在MySQL Datetime中格式 (YYYY-MM-DD HH:MM:SS),您不能仅将列数据类型从 Varchar/Text 更改为 Date/Datetime。否则,将会造成不可挽回的数据丢失。
这将是一个多步骤的过程。您首先需要将日期字符串转换为 MySQL date format (YYYY-MM-DD HH:MM:SS)。我们可以使用STR_TO_DATE()函数用于此。
您的示例日期字符串 (18-11-15 18:21:25
) 基本上采用 %y-%m-%d %T
格式。可以使用以下格式说明符:
%d
数值形式的月份中的第几天(01 到 31)%m
月份名称为数值(00 到 12)%y
2 位数值形式的年份%T
24 小时格式的时间 (hh:mm:ss)
更新日期的查询如下所示:
UPDATE invoices
SET created = STR_TO_DATE(created, '%y-%m-%d %T');
现在,您可以使用Alter Table
将数据类型从文本类型更改为日期时间。
ALTER TABLE invoices
MODIFY COLUMN created datetime;
关于mysql - 如何在mysql中将文本数据类型转换为日期时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53357478/