在数据库中保留后更改日期?

时间:2014-03-26 04:32:59

标签: java hibernate postgresql jpa jodatime

用户从JSP页面输入日期,并转换为Joda DateTime,字符串输出为

  

2014-03-26T00:00:00.000 + 09:00

但是,当我将包含日期的实体保存在数据库中并再次检索并打印出来时,它就变为

  

2014-03-25T09:00:00.000 + 09:00

我不知道为什么数据库会将此更改减少一天。 我使用postgres,hibernate JPA进行应用程序开发。 提前谢谢。

1 个答案:

答案 0 :(得分:1)

数据库中的值是多少?使用pgAdmin应用程序,psql命令行工具或其他一些数据库管理工具直接查询Postgres。

您在Postgres中使用的数据类型是什么?您可能应该使用TIMESTAMP WITH TIME ZONE。避免使用WITHOUT时区类型,因为忽略您可能提供的任何时区偏移信息。

尽管有名称,但两种类型都不存储任何时区信息。区别在于您是否希望Postgres关注传入数据的时区信息。请务必仔细阅读the doc并进行实验,直至了解日期时间的工作原理。

阅读Postgres专家David E. Wheeler的Always Use TIMESTAMP WITH TIME ZONE