我正在使用带有 EDT 时区的 MySQL。时移期间(2016 年 3 月 3 日,星期日,02:00)。我可以看到这种奇怪的行为,其中 mysql 忽略了我的 2ed 条件(下面以粗体显示)。有没有办法解决这个问题..?
mysql> explain select resId,resTimeStamp from RESUME
where resTimeStamp >='2016-03-13 1:58:00' && resTimeStamp < '2016-03-13 1:59:00'
解析的行数 = 9
mysql> explain select resId,resTimeStamp from RESUME
where resTimeStamp >='2016-03-13 1:59:00' && resTimeStamp < '2016-03-13 02:00:00';
解析的行数 = 2436217
mysql 将上述查询视为解释 select resId,resTimeStamp from RESUME 其中 resTimeStamp >='2016-03-13 1:59:00' 仅忽略 && resTimeStamp < '2016-03-13 02:00:00'; 是否可以调整 mysql 以将 2016-03-13 02:00:00 到 2016-03-13 02:59:59 视为 2016-03-13 03:00:00
最佳答案
如评论中所述,这是因为 Daylight Saving Time .当你“提前”时,一个小时就不见了。
坦率地说,时区是一场噩梦,最好尽可能避免。一般来说,set your database time zone to use UTC 是个好主意并将所有日期时间存储为 UTC .这样可以避免担心时区或夏令时等问题。您可以使用 CONVERT_TZ
处理转换,或您的编程语言自己的时区转换函数。
关于mysql - 夏令时问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40355909/