mysql - 夏令时问题

标签 mysql datetime timezone dst datetimeoffset

我正在使用带有 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/

相关文章:

SQL - 如何选择特定行之前的 x 行数

php - 如何正确设置mysql时区

java - Java 中是否有 TimeZone.getTimeZone() 的替代方案?

sql - SQL 中日期时间字段的时间部分

python - 如何获取包含默认时区的当前 isoformat 日期时间字符串?

asp.net - .net JSON 序列化程序将本地客户端时间返回给浏览器?

mysql - 在 while 循环中使用 hibernate 持续保存数据

php - PHP中如何隐藏多个链接的get变量

php - i18n Smarty 变量转换为 lang()

java - 使用另一个表中出现的次数计算属性值?