具有数据类型TIMESTAMP(6)WITH LOCAL TIME ZONE问题的数据库列

时间:2016-09-23 08:20:49

标签: oracle dst

我正在运行jasperserver应用程序的报告,该报告没有根据我想要数据的时间将正确的数据输入到报告中。

数据库上运行的查询是根据时间获取数据,请参阅下面的查询。

select * from intot where Site = 'LYNDANE' and code = 'RC1' 
and stamp between TO_DATE('2016/09/22 06:00:00', 'YYYY/MM/DD HH:MI:SS') 
           and TO_DATE('2016/09/22 08:00:00', 'YYYY/MM/DD HH:MI:SS') order by stamp asc;

它正在获取低于时间的错误数据

2016/09/22 07:00:00 and 2016/09/22 09:00:00

现在,当我运行查询一小时后,它正在获取正确的数据。

select * from intot where Site = 'LYNDANE' and code = 'RC1' 
and stamp between TO_DATE('2016/09/22 05:00:00', 'YYYY/MM/DD HH:MI:SS') 
           and TO_DATE('2016/09/22 07:00:00', 'YYYY/MM/DD HH:MI:SS') order by stamp asc

我检查了intot结构,发现邮票是数据类型

TIMESTAMP(6) WITH LOCAL TIME ZONE

我怀疑我发送给DB进行运行的查询会根据时区转换日期。

我检查了数据库的时区,见下文

select dbtimezone from dual;

DBTIME
------
+00:00

这是一种我可以修改查询以始终获得正确数据并且不会受到日光转换影响的方式。

0 个答案:

没有答案