检索存储在数据库中的日期时区

jav*_*fan 1 java oracle timezone hibernate date

我的J2EE应用程序部署在集群中,服务器可以位于多个时区.例如,一台服务器在EST中,另一台服务器在CST中.

考虑一种情况,其中请求到达EST中的服务器并将日期和时间存储在数据库中(没有时区).还有另一个请求来检索相同的日期.但该请求可能会转到CST中的另一台服务器.

有没有办法确定哪个时区日期存储在数据库中?

PS:我正在使用Oracle/Java/Hibernate.

And*_*eas 6

否.如果您存储DATE没有时区,则无法查询时区.

作为开发人员,您需要决定如何处理时区.记住你有3个时区:

  • 数据库服务器时区.
  • Web应用程序服务器时区.
  • 客户端浏览器时区.

如果洛杉矶的用户输入时间,巴黎的用户应该看到什么?

如果悉尼的用户执行操作,多伦多的用户应该看到什么操作时间戳?

在您可以回答这些问题(即定义您的要求)之前,无法对解决方案/实施进行编码/验证.

正如评论中所提到的,基本上有两种处理时区的方法:

  1. 将所有日期存储在固定的时区,例如UTC,并在需要的地方进行转换,这几乎无处不在.
  2. 使用时区存储日期,并根据需要进行转换或按时区显示.用户可能更喜欢转换,但这是您做出的设计决定.