【发布时间】:2015-05-28 19:21:48
【问题描述】:
当我尝试从我的 Java 应用程序将值插入到我的表中时,我看到 MySQL DATETIME 的意外行为。我已经阅读了很多关于 DATETIME 的 StackOverflow 问题和答案,但这似乎是一个完全不同的问题。
我的 Java 应用程序使用 MyBatis 和 this DateTimeTypeHandler 插入一个 joda DateTime 值 2015-03-04T22:30:59.922Z。 (我也修改了上面的代码,使用了setTimestamp(int, Timestamp, Calendar)方法但是没有注意到和结果的差异)。
我看到插入到表中的是值2015-03-04 14:30:59.922。我读到 MySQL DATETIME 使用服务器默认时区。我住在 PDT 时区,所以我希望该值为2015-03-04 15:30:59.922(即 15:30 而不是 14:30)。
令人惊讶的是,MySQL 中似乎没有任何东西指示 PDT 时区。那么为什么我在表格中的日期时间值是 2015-03-04 14:30:59.922?
mysql> select @@global.time_zone;
+--------------------+
| @@global.time_zone |
+--------------------+
| UTC |
+--------------------+
1 row in set (0.06 sec)
mysql> select @@session.time_zone;
+---------------------+
| @@session.time_zone |
+---------------------+
| UTC |
+---------------------+
1 row in set (0.07 sec)
mysql> SELECT @@system_time_zone;
+--------------------+
| @@system_time_zone |
+--------------------+
| UTC |
+--------------------+
1 row in set (0.07 sec)
【问题讨论】: