我正在使用带有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将以上查询视为解释从RESUME中选择resId,resTimeStamp 其中resTimeStamp&gt; ='2016-03-13 1:59:00'只忽略&amp;&amp; resTimeStamp&lt; '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
答案 0 :(得分:0)
正如评论中所提到的,这是因为Daylight Saving Time。当你“向前迈进”时,一小时就会失踪。
坦率地说,在可能的情况下,时区是最好避免的噩梦。一般来说,set your database time zone to use UTC最好将所有日期时间存储为UTC。这样可以避免担心时区或夏令时等问题。您可以使用CONVERT_TZ
来处理转换,或使用编程语言自己的时区转换功能。