我的 Oracle 数据库中有一个 DATE 类型的列。 06.09.12 是存储在那里的值之一。我还有一个映射到该表的 EJB 实体,该表有一个 java.util.Date 类型的成员字段“date”。但是,getter 方法返回存储在表中的日期加上一天,例如。 G。 07.09.12 而不是 06.09.12。如何准确获取存储的日期?我应该考虑使用时间戳吗?
最佳答案
您可能有不同的时区 - DB 上的时区与 Java 中设置的时区不同。底层时间实际上是相同的,但是,例如,DB 上的日期在 GMT 中被解释为 GMT,而 Java 中的日期被解释为东部时间。 GMT 午夜过后,GMT 比 GMT 早一天 7 个小时左右。
这两个时区默认为服务器的时区,但可以被数据库安装和 Java VM 覆盖。
要在 Oracle 上测试是否属于这种情况:
select dbtimezone,sessiontimezone from dual;
在 Java 上:
TimeZone tz = Calendar.getInstance().getTimeZone();
System.out.println("TimeZone: "+tz.getDisplayName());
关于java - Oracle 日期和 EJB 日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12363693/