MySQL中时区处理的最佳实践是什么?

时间:2013-10-08 17:53:17

标签: mysql timezone

以前曾经问过这个问题,但不是我要找的答案。我将所有日期存储在UTC / GMT的MYSQL中。当我用户提取数据时,引用时间最好是使用CONVERT_TZ构造......

SELECT CONVERT_TZ(mytime,'UTC',usertimezone) as mytime FROM table

或者最好在Mysql中临时设置会话区域然后进行正常查询吗?

SET time_zone = usertimezone;

如果我使用第二个,我是否只为每个用户会话执行一次,或者如果我没有使用持久打开,是否需要在每次查询之前设置它?

2 个答案:

答案 0 :(得分:7)

  • 如果您希望MySQL根据当前会话的TIMESTAMP设置进​​行转换,请使用time_zone

  • 如果要将UTC返回给您的应用程序以使其处理转换,请使用DATETIME。 (这是我的偏好。)

  • 不要试图将它们混合起来。对于DATETIME设置,time_zone不会执行任何操作,并且TIMESTAMP在返回到您的应用程序时不能被视为UTC,除非您完全确定time_zone已设置到UTC。

答案 1 :(得分:2)

如果您的数据存储在TIMESTAMP类型列中,那么您应该SET time_zone并且MySQL将在检索/插入时自动转换为/从UTC转换 - 您不需要再执行任何操作。这是推荐的方法。