我的数据库目前将'date'列设置为varchar(20),我的日期格式如下:
1/13/2015 20:00
我想在我的数据库上运行更新,将列类型更改为datetime,并将当前日期的格式更改为更典型的日期,例如
yyyy-mm-dd hh:mi
这可以在MySQL中完成吗?
答案 0 :(得分:3)
使用 STR_TO_DATE
功能
这是DATE_FORMAT()函数的反转。它需要一个字符串 str和格式字符串格式。 STR_TO_DATE()返回DATETIME值 如果格式字符串包含日期和时间部分,或DATE或 如果字符串仅包含日期或时间部分,则为TIME。如果 从str中提取的日期,时间或日期时间值是非法的, STR_TO_DATE()返回NULL并产生警告。
查看已转换日期
select str_to_date(date_column, '%m/%d/%Y %h:%i')
from tablename
确保一切正常,然后运行update
声明
update tablename set date_column = str_to_date(date_column, '%m/%d/%Y %h:%i')
最好将datetime
数据存储在datetime
数据
Alter table tablename modify column date_column datetime
答案 1 :(得分:0)
是的,它可以在mysql中完成。由于您现有的数据与mysql的日期时间格式不兼容,因此不能一步完成。
警告此转换可能会导致数据更改。例如, 如果缩短字符串列,则可能会截断值。阻止 转换为新数据类型时成功的操作 会导致数据丢失,在使用前启用严格的SQL模式 ALTER TABLE(参见第5.1.7节“服务器SQL模式”)。
第一步是处理数据转换问题,但是,最好在第二步之前启用严格的sql模式。如果您不确定,请创建另一个datetime列并使用str_to_date()更新其值,以并排查看原始值和转换值。