我在 mysql
数据库中有一个 DateTime
对象包含例如这个 datetime "2017-08-14 18:06:40"
和server/mysql
默认时区是美国,所以当我插入 datetime
时,它进入美国时区。
我的问题是当一个来自欧洲的用户选择那个日期时间时,它会有所不同,因为时间差异不是这样吗?
我该如何解决这个问题。我希望欧洲的用户获得相对于他们时区的日期时间
我通过搜索找到了这个
CONVERT_TZ(`comment_date`,@@global.time_zone,@@session.time_zone) AS comment_date,
然后我发现你需要设置@@session.time_zone
its not detected automatically
那么我们如何解决这个问题?网站或应用
使用哪些选项和技术来统一各国的datetime
?
最佳答案
如果您希望数据类型代表一个即时时刻,而不考虑保存时区,您应该将数据类型更改为 timestamp
而不是 datetime
。 Timestamp
始终保存为 UTC,而 datetime
表示本地日期和时间,不包含任何时区信息。
有关更多信息,请参阅此问题:Should I use field 'datetime' or 'timestamp'?
关于具有不同时区的 MySQL 日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45689225/