我在数据库中有两列,一个用于保存时间戳,另一个用于保存时区,如“+8”,“ - 5”字符串,我使用DATE_FORMAT(FROM_UNIXTIME(start_time), '%Y-%m-%d %H:%i')
恢复日期,是否有任何功能MySQL计算时区如start_time INTERVAL timezone
。
例如
start_time int 1491369437
timeonze char +8
用户保存2017-01-01 08:00:00和+8,我想将其更改回UTC,因此应该是2017-01-01 00:00:00。
答案 0 :(得分:1)
DATETIME 2017-01-01 08:00:00是1483254000 Unix时间
您可以使用CONVERT_TZ函数(dt,from_tz,to_tz)。
阅读https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_convert-tz
UTC是+0:00所以你需要在to_tz
中使用它<强>查询强>
SELECT CONVERT_TZ(FROM_UNIXTIME(1483254000), "+8:00", "+0:00");
<强>结果强>
CONVERT_TZ(FROM_UNIXTIME(1483254000), "+8:00", "+0:00")
---------------------------------------------------------
2017-01-01 00:00:00