2012-12-21 60 views
1

我插入这个DateTime数据'12/21/2012 1:13:58 PM'到我的MySQL数据库使用该SQL字符串:什么是MySQL数据库正确的DateTime格式?

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数据库?

+2

变化VALUES('@ stockID''@dateUpdated'); VALUES('@stockID','@dateUpdated');它应该工作 – Satya

+0

可以为“stock_dateUpdated”列提供表结构或数据类型 –

+2

逗号在'VALUES'中缺少逗号.. –

回答

6

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

所以,你可以有MySQL的执行转换为您在INSERT语句中,如果您的VALUES清单是这样的:(我注意到你有必要的逗号在VALUES列表中两个文字之间的丢失)

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


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

MySQL 5.5 Reference Manual.

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中的任何一个解释为日期。

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'))"; 
0

MySQL的DATETIME格式为YYYY-MM-DD HH:MM:SS - 看到这个page

相关问题