Mysql 如何将varchar转换为datetime,不起作用
我已将文本文件中的一些列导入我的表Mysql 如何将varchar转换为datetime,不起作用,mysql,sql,Mysql,Sql,我已将文本文件中的一些列导入我的表stuff 我必须将日期作为varchar(255)导入。我想将数据类型从varchar转换为datetime 日期数据的格式为: 6/2/2018 3:00:00 PM 6/2/2018 4:00:00 PM 6/2/2018 5:00:00 PM 我尝试了以下方法,但没有成功: select datum from stuff str_to_date(datum, %d/%m/%Y) 以及: 查询的语法不正确 实际上是要将字符串转换为日期。作为第二个参数,
stuff
我必须将日期作为varchar(255)
导入。我想将数据类型从varchar
转换为datetime
日期数据的格式为:
6/2/2018 3:00:00 PM
6/2/2018 4:00:00 PM
6/2/2018 5:00:00 PM
我尝试了以下方法,但没有成功:
select datum from stuff str_to_date(datum, %d/%m/%Y)
以及:
查询的语法不正确 实际上是要将字符串转换为日期。作为第二个参数,它需要一个表示输入字符串格式的字符串(不是一般的字符串!) 根据您的日期格式,您可以使用:
SELECT STR_TO_DATE('6/2/2018 3:00:00 PM', '%e/%c/%Y %l:%i:%s %p')
格式说明符详细信息:
:月日,数字(%e
)0..31
:月份,数字(%c
)0..12
:年份,数字,四位数%Y
:小时(%l
)1..12
:分钟,数字(%i
)00..59
:秒(%s
)00..59
:%p
或AM
PM
如果您实际上希望转换列的数据类型,则需要创建一个临时列,用转换后的数据更新它,然后删除原始列并重命名临时列,如:
ALTER TABLE stuff ADD (datum_new datetime);
UPDATE stuff SET datum_new = STR_TO_DATE(datum, '%e/%c/%Y %l:%i:%s %p');
ALTER TABLE stuff DROP datum;
ALTER TABLE stuff CHANGE COLUMN datum_new datum datetime;
如果您使用的是MySQL 8.0,那么最后一条语句可以写成:
ALTER TABLE stuff RENAME COLUMN datum_new TO datum;
您希望输出是什么?“不成功”是什么意思?您好,谢谢您的帮助。我收到错误1411(HY000):第二行上函数str_to_date的日期时间值“6/2/2009 3:00:00 PM”不正确。更新资料集datum_new=STR_至日期(数据,'%e/%c/%Y%l:%i:%s%p');似乎字符串周围还有其他单引号。。。尝试:
UPDATE stuff SET datum\u new=STR\u TO\u DATE(替换(datum),“%e/%c/%Y%l:%i:%s%p”)代码>我必须使用%m/%d/%Y,否则它只能转换700篇文章中的300篇。
ALTER TABLE stuff RENAME COLUMN datum_new TO datum;