mysql>SELECT (DATE_ADD(FROM_UNIXTIME(0), INTERVAL (600002000) MINUTE_SECOND)),from_unixtime(600002000)
+----------------------------------------------------------------------------+------------------------------------+
| (DATE_ADD(FROM_UNIXTIME(0), INTERVAL (600002000) MINUTE_SECOND))           | from_unixtime(600002000)           |
+----------------------------------------------------------------------------+------------------------------------+
| 1989-01-05 19:13:20                                                        | 1989-01-05 19:13:20                |
+----------------------------------------------------------------------------+------------------------------------+
mysql>SELECT (DATE_ADD(FROM_UNIXTIME(0), INTERVAL (554742000) MINUTE_SECOND)),from_unixtime(554742000)
+----------------------------------------------------------------------------+------------------------------------+
| (DATE_ADD(FROM_UNIXTIME(0), INTERVAL (554742000) MINUTE_SECOND))           | from_unixtime(554742000)           |
+----------------------------------------------------------------------------+------------------------------------+
| 1987-07-31 23:00:00                                                        | 1987-08-01 00:00:00                |
+----------------------------------------------------------------------------+------------------------------------+为什么2个结果会不一样呢,第二条会差1个小时

解决方案 »

  1.   

    好像和mysql有关,另外 机器上测试都是 1987-07-31 23:00:00 这个时间,实际这个时间戳使用php转换的时候应该是 1987-08-01 00:00:00  mysql有这样的bug吗?  那如果准确的把生日的时间戳用mysql直接查询出来呢。
      

  2.   

    不是mysql bug 和系统配置时区有关,可以查一下两台机器是不是设置相同时区
      

  3.   

    不同的机器上,这个值不同,可能是时区的问题,from_unixtime 的基础是 UNIX_TIMESTAMP() 值(按照官网,是 '1970-01-01 00:00:00' UTC)., 我的电脑上旱区是+8,所以 from_unixtime(0)的结果是: 1970-01-01 08:00:00你的第2个查询,抛开整天的数据不管,转换为小时是 15 小时(554742000%(24*60*60)/60/60),所以对于 +8区,时间肯定是:15+8=23:00,也就是 1987-08-01 00:00:00 这个值应该是错误的