【发布时间】:2016-11-25 04:14:54
【问题描述】:
我找到了一种使用 UTC 时区创建我想要的日期的方法: Java Date and Daylight Saving
所以我可以创建“Sun Mar 25 02:00:00”,但是当我在 Hibernate 中插入这个日期时,它没有写入它,似乎 hibernate 使用了一个我无法覆盖的不同时区。
我的问题是,如果我使用 UTC 时区,我也无法在我的 Hibernate/H2 数据库中插入这个日期:“Sun Mar 25 02:00:00”。
更新 1: 我正在尝试插入这些值:
Sun Mar 25 01:00:00 UTC 2012
Sun Mar 25 02:00:00 UTC 2012
Sun Mar 25 03:00:00 UTC 2012
Sun Mar 25 04:00:00 UTC 2012
Sun Mar 25 05:00:00 UTC 2012
Sun Mar 25 06:00:00 UTC 2012
Sun Mar 25 07:00:00 UTC 2012
Sun Mar 25 08:00:00 UTC 2012
Sun Mar 25 09:00:00 UTC 2012
Sun Mar 25 10:00:00 UTC 2012
Sun Mar 25 11:00:00 UTC 2012
Sun Mar 25 12:00:00 UTC 2012
Sun Mar 25 13:00:00 UTC 2012
Sun Mar 25 14:00:00 UTC 2012
Sun Mar 25 15:00:00 UTC 2012
Sun Mar 25 16:00:00 UTC 2012
Sun Mar 25 17:00:00 UTC 2012
Sun Mar 25 18:00:00 UTC 2012
Sun Mar 25 19:00:00 UTC 2012
Sun Mar 25 20:00:00 UTC 2012
Sun Mar 25 21:00:00 UTC 2012
Sun Mar 25 22:00:00 UTC 2012
Sun Mar 25 23:00:00 UTC 2012
但在数据库中有这些:
【问题讨论】:
-
从这个问题和你的另一个问题中仍然不清楚哪个你想要凌晨 2 点。世界标准时间凌晨 2 点?或者在某个本地时区凌晨 2 点?你说你不能插入值 - 当你尝试时会发生什么?
-
已更新。时区并不重要,我会插入“Sun Mar 25 02:00:00 2012”,但它不起作用。
-
时区绝对很重要。您的数据库本身是否有任何时区设置?
-
也许这就是问题所在。我正在使用 Hibernate 和 H2,我没有找到任何设置数据库时区的选项
-
如何插入数据,如何查询数据?根据使用的方法,将调整小时,因为时间不存在。如果您使用
java.util.Date/java.sql.Timestamp,就会发生这种情况。如果您将数据作为字符串插入和读取,则不会对 H2 的最新版本进行任何调整,因为在内部,H2 不再使用java.util.Calendar/java.util.Date/java.sql.Date/Time/Timestamp(正是因为这个原因)。跨度>