Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将日期时间插入mySql时出错_Mysql - Fatal编程技术网

将日期时间插入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@Warrio
mydate
的列类型是什么?我尝试过同样的查询,效果很好。SQL FIDLE。列类型设置为TIMESTAMP,正如您在这张尖叫快照中所看到的,如果您有mySql,请在您的计算机上自己尝试,您也会遇到同样的错误。@Warrio您能像我上面所做的那样创建一个SQL FIDLE并将链接发送给我吗?@Warrio附加脚本工作正常,我无法复制它。