尝试修复我们报告中的错误。目前问题如下:
太平洋标准时间 2 月 22 日晚上 9:45,有人提交了工单。
它到达我们的 Oracle 数据库并标准化为 EST(我们的数据库采用 EST,但我们与美国各地的客户合作)。
在 iReport 中,我们使用以下内容:
trunc(nvl(ls.date_occurred,ls.date_created)) 介于 TRUNC($P{DATE_FROM}) 和 TRUNC($P{DATE_TO}) 之间
这会从日期时间对象中删除时间戳,因此生成报告时不会保存小时数,只会保存现在的日期,即 2/23(分别为中午 12:25)。
这显然会影响我们的报告功能。所有数据似乎都是正确的,除了由于时区差异而在一天后生成的日期偏移量,以及调整后的数据没有与之关联的时间戳。 有没有人有另一种方法来调整日期时间而不使用从日期中删除时间戳的函数?
最佳答案
据我了解,您的开始/结束日期不是东部标准时间,这使得您报告中所需的日期与数据库中的日期之间存在差异。为了获得正确的记录,如果截断日期,您需要根据请求的时区调整请求的日期/从日期(如果您从 PST 时区请求,请首先将日期转换为 EST,然后进行查询)
另外,您可以查看:TIMESTAMP WITH TIME ZONE Datatype https://docs.oracle.com/cd/B19306_01/server.102/b14225/ch4datetime.htm
关于Java、Oracle db - trunc(nvl) 从日期时间对象中删除时间戳后出现时区问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42401260/