Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将日期字符串更改为";“上午/下午”;到MySQL中的实际日期_Mysql_Date_Datetime - Fatal编程技术网

将日期字符串更改为";“上午/下午”;到MySQL中的实际日期

将日期字符串更改为";“上午/下午”;到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函数。但它并没有给出预期的结果。相反,它为每一行返

我有一列日期写为字符串,末尾有“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函数。但它并没有给出预期的结果。相反,它为每一行返回相同的日期

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示例),所以可能需要先修复数据。