0

我的 Oracle DB 中有一个 DATE 类型的列。06.09.12 是存储在那里的值之一。我还有一个映射到表的 EJB 实体,它有一个 java.util.Date 类型的成员字段“日期”。但是,getter 方法返回存储在表中的日期加上一天,例如 07.09.12 而不是 06.09.12。如何准确获取存储的日期?我应该考虑使用时间戳吗?

4

1 回答 1

2

您可能有不同的时区 - 数据库上的时区与 Java 中设置的时区不同。底层时间实际上是相同的,但是,例如,DB 上的日期被解释为 GMT,而 Java 被解释为东部时间。格林威治标准时间午夜过后,格林威治标准时间提前一天 7 小时左右。

这两个时区都默认为服务器的时区,但可以被 DB 安装和 Java VM 覆盖。

要测试是否是这种情况,在 Oracle 上:

select dbtimezone,sessiontimezone from dual;

在 Java 上:

TimeZone tz = Calendar.getInstance().getTimeZone();
System.out.println("TimeZone: "+tz.getDisplayName());
于 2012-09-11T06:25:06.117 回答