use*_*423 2 mysql time timezone datetime database-design
这个问题专门涉及未来的日期和时间(对于过去的值,UTC 无疑是首选)。
我想知道是否有人对在 MySQL 数据库中保存未来日期和时间的“最佳”方法有建议(或者一般情况下),特别是在列可以保存不同时区时间的情况下。考虑到时区规则可能会改变 UTC 可能不是最好的选择。
到目前为止,我发现的最可行的选择是将其与位置一起保存为该位置当地时间的文本(例如“美国/*”)。不幸的是,这个解决方案可能更容易出现数据损坏,而且计算起来肯定不太方便。
有人能想出更好的办法吗?
提前致谢
首先,我之前已经详细介绍过这个问题,因此请阅读我的回答(此处和此处)以及Lau Taarnskov 的这篇博文。
对于 MySQL,您通常不希望使用TIMESTAMP未来事件的本地时间字段,因为它会在写入时从会话的时区转换为 UTC,然后从 UTC 转换回会话的时区在读取时。即使这些时区 ID 相同(不一定如此),也不能保证在写入数据和事件发生之间的一个或两个时区的时区数据不会发生更改发生。
相反,请使用DATETIME不进行隐式时区转换的字段。您可以得到您所写的确切值。存储事件的本地时间,并存储VARCHAR包含事件的时区标识符的字段。这是保留用户初衷的唯一方法。
我之前给出的答案中都描述了基本原理和边缘情况。
| 归档时间: |
|
| 查看次数: |
2052 次 |
| 最近记录: |