我正在使用此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数据库的正确格式/值是什么?
答案 0 :(得分:7)
问: 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')
所以,如果您的INSERT
列表如下所示,您可以让MySQL在VALUES
语句中为您进行转换:
... VALUES ('@stockID', STR_TO_DATE('@dateUpdated','%m/%d/%Y %h:%i:%s %p');
(我注意到VALUES
列表中的两个文字之间缺少必需的逗号。)
MySQL确实在DATETIME
文字的各个部分之间的分隔符中允许一些宽容度,因此它们不是严格要求的。
答案 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