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

时间:2012-12-21 05:14:54

标签: c# mysql sql insert

我正在使用此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数据库的正确格式/值是什么?

4 个答案:

答案 0 :(得分:7)

问: 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')

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

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

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


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

MySQL 5.5 Reference Manual.

答案 1 :(得分:2)

我使用的是年度工作日,24小时制。在PHP中它是date('Y-m-d H:i:s'),我认为它对应于C#/ .NET中的yyyy-MM-dd HH:mm:ss。 (时间部分是可选的,破折号也是如此。)

在文档中确认Date and Time Literals

  

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

答案 2 :(得分:1)

如评论中所述,您缺少值中的分隔符,。在插入之前,最好先使用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'))";

答案 3 :(得分:0)

MySql DATETIME格式为YYYY-MM-DD HH:MM:SS - 请参阅page