之前已经问过这个问题,但不是我要找的答案.我将所有日期存储在UTC/GMT的MYSQL中.当我提取用户参考时间的数据时,最好使用CONVERT_TZ构造...
SELECT CONVERT_TZ(mytime,'UTC',usertimezone) as mytime FROM table
或者最好在Mysql中临时设置会话区域然后进行正常查询?
SET time_zone = usertimezone;
如果我使用第二个,我只为每个用户会话执行一次,或者如果我不使用持久打开,我是否需要在每个查询之前设置它?
使用TIMESTAMP,如果你想MySQL的基础上,做转换time_zone当前会话的设置.
使用DATETIME,如果你正在返回UTC到您的应用程序为它处理转换那里.(这是我的偏好.)
不要试图将它们混合起来.  DATETIME不会对time_zone设置执行任何操作,并且TIMESTAMP在将其返回到您的应用程序时不能假定为UTC,除非您绝对确定time_zone设置为UTC.
如果您的数据存储在TIMESTAMP类型列中,那么您应该SET time_zone在检索/插入时自动与 UTC 进行转换,MySQL 会自动将其转换为 UTC — 您无需执行任何其他操作。这是推荐的方法。
| 归档时间: | 
 | 
| 查看次数: | 3279 次 | 
| 最近记录: |