2012-09-11 120 views
0

我在Oracle数据库中有一个DATE类型的列。 06.09.12是存储在那里的值之一。我还有一个映射到表的EJB实体,它有一个类型为java.util.Date的成员字段“date”。但是,getter方法返回表中存储的日期加上一天,例如, G。 07.09.12而不是06.09.12。我怎样才能得到确切的日期存储?我应该考虑使用时间戳吗?Oracle日期和EJB日期

+0

你怎么retreiving从DB的日期? –

+1

DB中的日期是否模仿时区? (什么是NLS_DATE_FORMAT值?)。你运行java代码的机器上的用户时区值是多少? – aviad

+0

谢谢,这个问题与不同的时区有关 – gisly

回答

2

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

这两个时区默认为服务器的时区,但可以由数据库安装和Java VM覆盖。

为了测试是否是这种情况,在Oracle:

select dbtimezone,sessiontimezone from dual; 

,提供Java:

TimeZone tz = Calendar.getInstance().getTimeZone(); 
System.out.println("TimeZone: "+tz.getDisplayName());