将日期时间插入mySql时出错
我有一个表将日期时间插入mySql时出错,mysql,Mysql,我有一个表reports,其中有一个字段report\u date。字段类型设置为时间戳 当我尝试运行以下查询时: insert into reports (report_date) values (1990-03-25 02:16:36) 我得到以下错误: 错误代码:1292。不正确的日期时间值:“1990-03-2502:16:36” 第1行“报告日期”列0.000秒 但是,查询运行正常,值为'1999-03-25 02:16:36' 为什么会这样 编辑 以下是插入查询的屏幕截图: 正如您
reports
,其中有一个字段report\u date
。字段类型设置为时间戳
当我尝试运行以下查询时:
insert into reports (report_date) values (1990-03-25 02:16:36)
我得到以下错误:
错误代码:1292。不正确的日期时间值:“1990-03-2502:16:36”
第1行“报告日期”列0.000秒
但是,查询运行正常,值为'1999-03-25 02:16:36'
为什么会这样
编辑
以下是插入查询的屏幕截图:
正如您所看到的,我引用的是生效日期,但我仍然得到了“1990-03-25 02:16:36”
的错误,而不是“1991-03-25 02:16:36”
我以这种方式插入了数千条记录。我只是对这次约会有点问题。我也在小提琴上试过,它能用,但在我的机器上不行。用单引号括起日期,如
insert into `reports` (`report_date`) values('1990-03-25 02:16:36')
MySQL关于datetime
的文档说明如下:
时间戳数据类型用于同时包含日期和时间的值
时光流逝。时间戳的范围为“1970-01-01 00:00:01”UTC到
协调世界时2038-01-19 03:14:07
现在,如果使用像1990-03-25 02:16:36这样的值而不加引号,MySQL会将1990-03-25
解释为一个表达式,并尝试对其求值,例如:
SELECT 2016-01-01;
上述内容被视为一个表达式,并产生2014
value(如下所示)。但是,它遇到了00:00:01
,无法确定要做什么,因此失败了
如果将值括在引号中,则整个字符串
将被视为单个标记,并被解析为时间戳
希望这有帮助。我找不到错误来解释错误,但我通过将数据类型从时间戳更改为日期时间来避免错误,因为sql就是这样工作的,所以必须使用引号dates@Warriomydate
的列类型是什么?我尝试过同样的查询,效果很好。SQL FIDLE。列类型设置为TIMESTAMP,正如您在这张尖叫快照中所看到的,如果您有mySql,请在您的计算机上自己尝试,您也会遇到同样的错误。@Warrio您能像我上面所做的那样创建一个SQL FIDLE并将链接发送给我吗?@Warrio附加脚本工作正常,我无法复制它。