【问题标题】:MySQL - How to parse a string value to DATETIME format inside an INSERT statement?MySQL - 如何在 INSERT 语句中将字符串值解析为 DATETIME 格式?
【发布时间】:2012-05-25 01:19:43
【问题描述】:

我有一个MySQL database,其中有一列日期类型为DATETIME

我从外部应用程序获取日期/时间的字符串值。该字符串值如下所示:

'5/15/2012 8:06:26 AM'

MySQL 在 INSERT 上抛出错误:"Error. Incorrect datetime value"。我的解决方法是将列类型更改为VARCHAR,这可行,但我确实需要将数据作为适当的日期和时间以供将来使用。

我研究了MySQL DATETIME 值的可接受格式,发现MySQL 想要DATETIME 格式为'YYYY-MM-DD HH:MM:SS'

我无法更改外部应用程序以重新格式化日期/时间字符串的格式,所以我唯一的机会就是处理它。

我认为,我需要做的是在我的INSERT 语句中使用MySQL syntax 解析现有字符串,但我不知道该怎么做。我有一些想法,我需要使用 SELECT 子句,也许是 STR_TO_DATE,以某种方式与我的 INSERT 语句结合使用。

这是我当前的 INSERT 语句。我删除了其他不会导致问题的字段,只是为了使示例干净。

INSERT INTO tblInquiry (fldInquiryReceivedDateTime) VALUES ('5/15/2012 8:06:26')

【问题讨论】:

    标签: mysql datetime insert


    【解决方案1】:

    使用 MySQL 的 STR_TO_DATE() 函数解析您尝试插入的字符串:

    INSERT INTO tblInquiry (fldInquiryReceivedDateTime) VALUES
      (STR_TO_DATE('5/15/2012 8:06:26 AM', '%c/%e/%Y %r'))
    

    【讨论】:

    • 有没有办法包含一个适应不同格式的 SWITCH?
    • 看来STR_TO_DATE('2/15/2017 05:16:56 PM','%m/%d/%Y %r') 格式也适用...+1 好建议,蛋酒先生!!
    猜你喜欢
    • 2012-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-17
    • 1970-01-01
    • 2011-07-18
    • 2020-07-08
    • 1970-01-01
    相关资源
    最近更新 更多