完成更改应用程序时区的最佳方法是什么?在我看来,必须发生以下情况:
- 服务器 TZ 已由系统管理员更改
- 必须重新启动 mysql。
- 数据库中每个基于时间的列都必须使用convert_tz 或等效方法更新所有值。因此,要么必须编写一个 mysql 脚本,要么编写一个 grails 脚本来加载每个类的每一行,并更新所有时间字段。
显然,在发生这种情况时应该关闭服务器,并且必须做好备份以防出现错误。
有更好/更简单的方法吗?
最佳答案
Java 在使用日期时不使用时区;它将所有内容存储为 UTC,并且仅在显示日期时使用时区。有关 java 日期/时间的讨论,请参阅以下链接。 http://www.odi.ch/prog/design/datetime.php
- 如果您在 MySQL 中使用“日期”、“时间”或“日期时间”列类型,则时区并不重要。
- 如果您使用 TIMESTAMP 列类型,时区可能很重要,因为 TIMESTAMP 存储为 UTC,但在检索和存储值时已完成转换。有关 MySQL 时区行为的讨论,请参阅 http://dev.mysql.com/doc/refman/5.1/en/time-zone-support.html .
- 如果您担心在不同时区的多个服务器之间同步对象,事情会变得更加复杂,请参阅以下线程以获取对此的讨论。 http://www.pubbs.net/201006/grails/2500-grails-user-how-to-get-gorm-to-store-dates-as-timestamp-in-utc-by-default-without-a-custom-hibernate-mapping-or-joda-time-plu.html
关于mysql - grails/mysql 时区更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3390770/