MySQL 5.7.26奇怪的问题...无法将日期时间设置为:2020-03-21 00:00:00

时间:2019-09-25 00:56:51

标签: mysql

我无法将此日期插入表格2020-03-21

我的意思是我可以将20和22设置得很好,但是当我设置21时会失败并显示错误:

  

错误的日期时间值:“ 2020-03-21 00:00:00”

使用PDO,我得到:

  

PDOException::(“” SQLSTATE [22007]:无效的日期时间格式:1292错误的日期时间值:'when'在第1行的日期为'2020-03-21 00:00:00')

我真的很困惑,感谢您的帮助!

服务器版本:5.7.26-MySQL社区服务器(GPL)

协议版本:10

表格:

CREATE TABLE `test` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `when` timestamp NULL DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4;

查询:

这很好用:

INSERT INTO `test` (`when`) VALUES ('2020-03-20 00:00:00');

这将返回错误:

INSERT INTO `test` (`when`) VALUES ('2020-03-21 00:00:00');
  

第1行“时间”列的日期时间值不正确:“ 2020-03-21 00:00:00”

enter image description here

使用phpMyAdmin出现相同错误

enter image description here

1 个答案:

答案 0 :(得分:0)

@MadhurBhaiya对此发表了评论,

问题是“夏令时”,基本上我的服务器所在时区不存在该时间。

通过将时区更改为UTC(没有夏时制)来解决此问题

另外,请注意,此问题仅在TIMESTAMP字段中发生(在DATETIME中没有发生)