Java,Oracle DB- trunc(NVL)之后的时区问题从DateTime对象剥离时间戳



试图修复我们报告中的错误。目前的问题是:

在PST中2/22的9:45 PM有人提交工作单。

它访问了我们的Oracle数据库并归一化为EST(我们的数据库在EST中,但我们与我们的客户合作)。

在iReport中,我们使用以下内容:

trunc(nvl(ls.date_occurred,ls.date_created)) between TRUNC($P{DATE_FROM}) AND TRUNC($P{DATE_TO})

这将时间戳从DateTime对象中剥离,因此,当生成报告时,它不会节省小时,只有现在的日期为2/23(分别为上午12:25)。

这显然抛出了我们的报告功能。所有数据似乎都是正确的,除了由于时区差而生成的日期偏移,并且调整后的数据没有与之相关的时间戳。是否有人可以在不使用将时间戳从日期中剥离时间戳的函数进行调整的另一种调整方法?

,因为我了解您从/到日期不在EST中,这使得您在数据库中报告日期所需的日期之间的差异。为了获取正确的记录,如果需要截断日期,则根据请求的时区调整到/从日期的请求日期(如果您从PST TimeZone请求,请先将日期转换为EST,然后进行查询)

另外,您可以查看:带时区数据类型的时间戳https://docs.oracle.com/cd/b19306_01/server.102/b14225/ch4datetime.htm

事实证明,我需要对nvl内部的date_created的时区进行调整,因为date_occurred是扭曲的,而date_created却没有。这会导致数据丢失。

最新更新