将日期时间插入mySql时出错

时间:2017-05-10 17:48:32

标签: mysql

我有一个表reports,其中包含字段report_date。该字段的类型设置为TIMESTAMP

当我尝试运行以下查询时:

insert into reports (report_date) values (1990-03-25 02:16:36)

我收到以下错误:

  

错误代码:1292。日期时间值不正确:' 1990-03-25 02:16:36'对于   栏' report_date'在第1行0.000秒

但是查询运行正常,值为'1999-03-25 02:16:36'

为什么会这样?

修改 以下是INSERT查询的屏幕截图: ![enter image description here 正如您所看到的,我引用了值日期,但我仍然收到"1990-03-25 02:16:36"的错误,但没有收到"1991-03-25 02:16:36"的错误。

我已经通过这种方式插入了数千条记录。我对这个日期有问题。我也在Fiddle here上尝试过它,但它不起作用,但不在我的机器上。

3 个答案:

答案 0 :(得分:1)

Here's MySQL关于datetime的文档,这就是它所说的:

  

TIMESTAMP数据类型用于包含date和的值   时间部分。 TIMESTAMP的范围是'1970-01-01 00:00:01'UTC到   '2038-01-19 03:14:07'UTC。

现在,如果您使用不带引号的1990-03-25 02:16:36之类的值,MySQL会将1990-03-25解释为表达式并尝试对其进行评估,例如:

SELECT 2016-01-01;

以上内容被视为表达式并产生2014值(此处为SQL Fiddle)。但是,它会遇到00:00:01,无法确定要做什么,因此失败了。

如果将值括在引号中,整个string将被视为单个标记,并被解析为Timestamp

希望这有帮助。

答案 1 :(得分:0)

将日期用单引号括起来,如

insert into `reports` (`report_date`) values('1990-03-25 02:16:36')

答案 2 :(得分:0)

我无法找到解释错误的错误,但我通过将数据类型从TIMESTAMP更改为DATETIME来避免错误。