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
,它可以将各种格式的字符串转换为DATE
或DATETIME
数据类型。
因此,作为替代方案,您还可以通过调用该函数来指定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 – 请参阅本页