Py学习  »  DATABASE

在mysql中,如何将日期格式从“am/pm”为字符串的日期改为实际日期?

Florian Castelain • 5 年前 • 2021 次点击  

我有一列日期,以字符串形式写,结尾是“am”和“pm”,例如:

1/1/2016 12:00:00.000 AM

列的类型当前为 varchar ,我想将类型更改为 datetime 格式。

尝试1

从phpmyadmin dashboard更改列类型会出现以下错误:

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` 

结果

enter image description here

那么,我如何更改列的格式 瓦查尔 (带格式= dd/mm/yy hh:mm:ss.ms AM )到 日期时间 (带格式= yyyy-mm-dd hh:mm:ss )在MySQL7.4.1中?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/52279
文章 [ 2 ]  |  最新文章 5 年前
Tim Biegeleisen
Reply   •   1 楼
Tim Biegeleisen    5 年前

我会使用这个版本:

SELECT STR_TO_DATE('1/1/2016 12:00:00.000 PM', '%d/%m/%Y %h:%i:%s.%f %p')
Salman A
Reply   •   2 楼
Salman A    5 年前

你只需要使用 correct pattern :

SELECT STR_TO_DATE('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')

一旦对result drop满意,varchar列将被重命名为临时列。