将日期字符串更改为";“上午/下午”;到MySQL中的实际日期
我有一列日期写为字符串,末尾有“am”和“pm”,例如:将日期字符串更改为";“上午/下午”;到MySQL中的实际日期,mysql,date,datetime,Mysql,Date,Datetime,我有一列日期写为字符串,末尾有“am”和“pm”,例如: 1/1/2016 12:00:00.000 AM 列的类型当前为varchar,我想将类型更改为datetime格式 尝试1 从phpmyadmin仪表板更改列类型会出现以下错误: Query error: #1292 - Incorrect datetime value: '1/1/2016 12:00:00.000 AM' 尝试2 考虑到日期的格式,我尝试使用STR_to_date函数。但它并没有给出预期的结果。相反,它为每一行返
1/1/2016 12:00:00.000 AM
列的类型当前为varchar
,我想将类型更改为datetime
格式
尝试1
从phpmyadmin仪表板更改列类型会出现以下错误:
Query error:
#1292 - Incorrect datetime value: '1/1/2016 12:00:00.000 AM'
尝试2
考虑到日期的格式,我尝试使用STR_to_date函数。但它并没有给出预期的结果。相反,它为每一行返回相同的日期
SELECT STR_TO_DATE(`assembling-machine-tag`.`Time`, "%Y") from `assembling-machine-tag`
结果
那么,如何在MySQL 7.4.1中将我的列的格式从varchar
(格式=dd/mm/yy hh:mm:ss.ms AM
)更改为datetime
(格式=yyyy-mm-dd hh:mm:ss
),您只需要使用:
选择截止日期('1/2/2016 01:02:03.456 AM','%e/%c/%Y%h:%i:%s.%f%p'))
-- 2016-02-01 01:02:03.456000
为了将varchar数据转换为datetime,首先需要创建一个临时的datetime
列,并按如下方式进行更新:
UPDATE t SET`datetimetemp`=STR_TO_DATE(`varchardate`,'%c/%e/%Y%h:%i:%s.%f%p'))
对结果满意后,删除varchar列并重命名临时列。我将使用以下版本:
SELECT STR_TO_DATE('1/1/2016 12:00:00.000 PM', '%d/%m/%Y %h:%i:%s.%f %p')
str_to_date()函数就是您需要的函数,您只需要使用正确的格式字符串。Mysql手册有一个关于格式字符串的全面文档。值得指出的是,并没有像12 AM这样的东西(如ops示例),所以可能需要先修复数据。