【发布时间】:2017-11-09 20:31:49
【问题描述】:
我正在开发航空 Java 应用程序,需要在 Oracle DB 中存储本地时间和时区信息。
DATE/TIMESTAMP 类型的问题比 WITH TIME ZONE 类似。
如果我将本地日期存储在 DATE 字段中,我应该为 Oracle DB 和 Java/Hibernate 映射中的单独字段分配什么类型的偏移量?我希望日期算术在 Java 和 Oracle 原生 SQL 查询中都很容易。
我只能成像INT(6) 以将偏移量存储为秒。原生 Oracle SQL 查询可以使用算术运算:
departure_date + departure_off/(24*60*60)
在 Java 中:
departureDate.atOffset(ZoneOffset.ofTotalSeconds(departureOff))
更新我没有 TZ 地区的信息,例如“美国/太平洋”,只有数字偏移量。
【问题讨论】:
-
为什么你认为 DATE/TIMESTAMP 类型的问题更少?
-
@WernfriedDomscheit 看看tonyhasler.wordpress.com/2010/09/04/…
-
看了这篇博客,主要列出了一些性能问题。请记住,如果您必须在查询中运行与时区相关的偏移量计算,那么您可能会取消使用
DATE/TIMESTAMP类型获得的性能提升 -
您打算如何处理夏令时?
-
我不需要处理夏令时。出发事件发生在特定时间,外部系统提供时间/TZ 信息。我只需要保留这些信息并进行范围选择。
标签: java oracle hibernate timezone timezone-offset