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

MySQL 5.7.26奇怪的问题。。。无法将日期时间设置为:2020-03-21 00:00:00,mysql,Mysql,我无法在我的表格中插入此日期:2020-03-21 我的意思是我可以设置20和22很好,但当我设置21时,它会出错: 日期时间值不正确:“2020-03-21 00:00:00” 使用PDO,我得到: PDOException::(“SQLSTATE[22007]:无效的日期时间格式:1292不正确的日期时间值:“2020-03-21 00:00:00”用于第1行的“when”列) 我真的很困惑,所以非常感谢您的帮助 服务器版本:5.7.26-MySQL社区服务器(GPL) 协议版本:10 表:

我无法在我的表格中插入此日期:
2020-03-21

我的意思是我可以设置20和22很好,但当我设置21时,它会出错:

日期时间值不正确:“2020-03-21 00:00:00”

使用PDO,我得到:

PDOException::(“SQLSTATE[22007]:无效的日期时间格式:1292不正确的日期时间值:“2020-03-21 00:00:00”用于第1行的“when”列)

我真的很困惑,所以非常感谢您的帮助

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

协议版本:10

表: 查询: 这很好用:

INSERT INTO `test` (`when`) VALUES ('2020-03-20 00:00:00');
INSERT INTO `test` (`when`) VALUES ('2020-03-21 00:00:00');
这将返回错误:

INSERT INTO `test` (`when`) VALUES ('2020-03-20 00:00:00');
INSERT INTO `test` (`when`) VALUES ('2020-03-21 00:00:00');
第1行“when”列的日期时间值不正确:“2020-03-21 00:00:00”

使用phpMyAdmin时出现相同错误


@MadhurBhaiya将此作为一种评论予以回答

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

通过将时区更改为UTC(没有夏令时)修复了此问题


另外,请注意,此问题仅发生在
时间戳
字段中(不发生在
日期时间
中)

显示您正在运行的确切查询。还有一个表模式。@zerkms不确定我为什么被否决,它与表和查询无关。。。添加了一个简单的示例表。您的服务器时区是什么?你很可能有某种夏时制,也许这个特定的时间在你的生活中根本不存在timezone@MadhurBhaiya你完全正确!谢谢你帮我理解这一点。欢迎。你可以把你的时区作为答案。。我不明白为什么某个特定的时间会因为某些夏令时而不存在。有人能解释一下这是怎么发生的吗?@Bhumikbhatt在某个特定的日期,恰好在
00:00:00
的时间更改为
01:00:00
,因此该日期的时间范围
00:00:00-00:59:59
不存在!某些时区没有夏令时,例如UTC“在特定日期,恰好在00:00:00,时间更改为01:00:00”@J.Doe,则
00:00:00
应在逻辑上存在
00:00:00.000001
00:59:59
不能存在。。。如果
00:00:00
不可能,MySQL时间戳数据类型会处理得有点古怪…@RaymondNijland我也很困惑,但我认为00:00:00表示为
01:00:00
。很高兴知道这个MySQL问题,虽然它可能会导致一些严重的问题。。。将始终坚持UTC。我认为最好是他们自动转换这些时间,例如在那个日期的00:30到01:30,而不是返回一个错误,或者至少一个设置会有所帮助。这很疯狂,但你的回答帮助了我!我的数据库不允许我使用
'2020-03-29 02:00:00'
(服务器上配置了CEST时区),MySQL 8.0