MySQL - 如何在INSERT语句中解析字符串值为DATETIME格式?

Tim*_*ree 42 mysql datetime insert

我有一个MySQL database,具有日期类型的列DATETIME.

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

'5/15/2012 8:06:26 AM'
Run Code Online (Sandbox Code Playgroud)

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

我研究了接受的MySQL DATETIME值格式,并发现MySQL希望DATETIME格式为'YYYY-MM-DD HH:MM:SS'.

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

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

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

INSERT INTO tblInquiry (fldInquiryReceivedDateTime) VALUES ('5/15/2012 8:06:26')
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助,我是SQL新手.

egg*_*yal 88

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

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

  • 似乎`STR_TO_DATE('2/15/2017 05:16:56 PM','%m /%d /%Y%r')'格式也有效... +1好建议Mr,Eggnog !! (2认同)