MySQL数据库的正确DateTime格式是什么?

我正在使用此SQL字符串将此DateTime数据'12/21/2012 1:13:58 PM'插入到我的MySQL数据库中:

 String Query = "INSERT INTO `restaurantdb`.`stocksdb` (`stock_ID`,`stock_dateUpdated`) VALUES ('@stockID' '@dateUpdated'); 

我收到此错误消息:

 Incorrect datetime value: '12/21/2012 1:13:58 PM' for column 'stock_dateUpdated' at row 1 

那么dateTime输入MySQL数据库的正确格式/值是什么?

问: MySQL语句中DATETIME文字的正确格式/值是什么?

答:在MySQL中, DATETIME文字的标准格式是:

  'YYYY-MM-DD HH:MI:SS' 

将时间分量作为24小时制(即,小时数位作为00和23之间的值提供)。

MySQL提供了一个内置函数STR_TO_DATE ,它可以将各种格式的字符串转换为DATEDATETIME数据类型。

因此,作为替代方案,您还可以通过调用该函数来指定DATETIME的值,如下所示:

 STR_TO_DATE('12/21/2012 1:13:58 PM','%m/%d/%Y %h:%i:%s %p') 

因此,如果您的VALUES列表如下所示,您可以让MySQL在INSERT语句中为您进行转换:

 ... VALUES ('@stockID', STR_TO_DATE('@dateUpdated','%m/%d/%Y %h:%i:%s %p'); 

(我注意到你的VALUES列表中的两个文字之间缺少必需的逗号。)


MySQL确实在DATETIME文字部分之间的分隔符中允许一些自由度,因此它们不是严格要求的。

MySQL 5.5参考手册。

我用过的是年月日,24小时。 在PHP中它的date('Ymd H:i:s') ,我相信它对应于yyyy-MM-dd HH:mm:ss in C#/ .NET。 (时间部分是可选的,破折号也是如此。)

在文档, 日期和时间文字中确认 :

日期和时间值可以用多种格式表示,例如带引号的字符串或数字,具体取决于值的确切类型和其他因素。 例如,在MySQL期望日期的上下文中,它将’2015-07-21’,’20150721’和20150721中的任何一个解释为日期。

正如评论中所提到的,您在值中缺少分隔符。 在插入之前,最好先使用STR_TO_DATE将字符串转换为日期对象:

 String Query = "INSERT INTO `restaurantdb`.`stocksdb` "+ " (`stock_ID`,`stock_dateUpdated`) VALUES "+ "('@stockID', STR_TO_DATE(@dateUpdated, '%m/%d/%Y %h:%i:%s %p'))"; 

MySql DATETIME格式为YYYY-MM-DD HH:MM:SS – 请参阅本页