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



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

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

还是在 Mysql 中临时设置会话区域然后执行普通查询更好?

SET time_zone = usertimezone;
如果我

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

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

  • 如果要将 UTC 返回到应用程序,请使用 DATETIME,以便它在那里处理转换。 (这是我的偏好。

  • 不要试图混淆这些。 DATETIME不会对time_zone设置执行任何操作,并且TIMESTAMP在返回到应用程序时不能假定为 UTC,除非您绝对确定time_zone设置为 UTC。

如果你的数据存储在TIMESTAMP类型的列中,那么你应该SET time_zone,MySQL将在检索/插入时自动转换为UTC - 你不需要做更多的事情。 这是推荐的方法。

相关内容

  • 没有找到相关文章