【问题标题】:MySql convert start_date (VARCHAR) column datatype to start_date (DATETIME) without losing dataMySql 将 start_date (VARCHAR) 列数据类型转换为 start_date (DATETIME) 而不会丢失数据
【发布时间】:2020-09-25 15:46:00
【问题描述】:

我有一个start_date(VARCHAR) column,其中的数据以“11/06/15 06:00:00 AM”格式存储。

我在使用 Jquery DataTable 时遇到问题,它没有正确排序此列。

我想将start_date(VARCHAR) 列转换为start_date(DATETIME) 格式。

我尝试了几个 alter 命令,它将日期替换为 0000-00-00,但没有正确转换。

UPDATE videos SET `temp_date` = STR_TO_DATE(`start_date`, '%e/%c/%Y %h:%i:%s.%f %p')

请建议我使用 sql 查询来解决问题而不会丢失数据。

【问题讨论】:

  • 试试STR_TO_DATE(start_date, '%e/%c/%Y %h:%i:%s %p')。您的格式有 .%f 部分(微秒),但您的日期没有微秒 - 11/06/15 06:00:00 AM
  • 在某些情况下它给我NULL。例如“15 年 11 月 23 日下午 12:00:00”。第二个问题结果是“2015-06-11 06:00:00”。根据 PM 的记录,我现在不知道。

标签: mysql sql database datatables


【解决方案1】:

'11/06/15 06:00:00 AM'的格式是'%m/%d/%y %h:%i:%s %p'

SELECT STR_TO_DATE('11/06/15 06:00:00 AM', '%m/%d/%y %h:%i:%s %p')

Result:

2015-06-11 06:00:00

Here 您可以找到所有可以与STR_TO_DATE() 一起使用的说明符。

【讨论】:

  • 我现在面临的两个问题。首先没有关于上午/下午的线索。对于大多数数据来说,第二个是 NULL。例如“11/23/15 12:00:00 PM”
  • 您应该已发布“11/23/15 12:00:00 PM”作为示例数据,因为从这里可以明显看出 11 是月份,23 是日期。请参阅我编辑的答案。
猜你喜欢
  • 1970-01-01
  • 2018-10-30
  • 2020-12-06
  • 1970-01-01
  • 1970-01-01
  • 2012-12-01
  • 2023-03-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多