4

我正在使用以下 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

4 回答 4

8

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

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

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

时间组件为 24 小时制(即,小时数字作为 00 到 23 之间的值提供)。

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

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

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

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

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

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


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

MySQL 5.5 参考手册。

于 2012-12-21T05:19:05.743 回答
2

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

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

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

于 2012-12-21T05:18:53.640 回答
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'))";
于 2012-12-21T05:20:57.553 回答
0

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

于 2012-12-21T05:24:09.083 回答