Oracle sql查询需要根据时区进行更改

Oracle sql查询需要根据时区进行更改,sql,oracle,timezone,oracle11g,epoch,Sql,Oracle,Timezone,Oracle11g,Epoch,我有一个sql查询来获取日期范围的记录。我的查询工作是find byut当我分析数据时,我发现记录是根据GMT时区值重新记录的,因此导致rest结果不正确 我从数据库中的unix历元值中获取时间 SELECT tableA.columnA,tableB.columnB FROM tableA INNER JOIN tableB ON tableA.aId = tableB.aId WHERE (to_date('1970-01-01 00:00:00 +10:00','yyyy-MM-dd

我有一个sql查询来获取日期范围的记录。我的查询工作是find byut当我分析数据时,我发现记录是根据GMT时区值重新记录的,因此导致rest结果不正确

我从数据库中的unix历元值中获取时间

SELECT tableA.columnA,tableB.columnB 
FROM tableA INNER JOIN tableB ON  tableA.aId = tableB.aId 
WHERE (to_date('1970-01-01 00:00:00 +10:00','yyyy-MM-dd hh24:mi:ss') +    (tableB.epochValue/60/60/24/1000)) >  to_date('--FROM_DATE--', 'yyyy-MM-dd hh24:mi:ss') 
AND (to_date('1970-01-01 00:00:00 +10:00','yyyy-MM-dd hh24:mi:ss') + (tableB.epochValue/60/60/24/1000)) <= to_date('--TO_DATE--', 'yyyy-MM-dd hh24:mi:ss');
我想根据我的时区(GMT+10)获取记录,但此脚本根据GMT时区获取数据。 我想知道如何通过时区来获得正确的日期对象

使用,我得到了这些值 我的时代价值-1345079730 格林尼治标准时间:2012年8月16日星期四01:15:30格林尼治标准时间 您的时区:2012年8月16日星期四11:15:30 GMT+10


我的数据库是-Oracle database 11g Enterprise Edition 11.2.0.2.0版-64位

找到了我问题的答案

显然,在计算ECHOH值以及

时,需要考虑时区设置。 将10小时10*60*60*1000毫秒加在历元值上-历元当前值以GMT为单位,所以为了使其成为EST GMT+10,我添加了这个。 用于标记时间戳而不是截止日期

SELECT tableA.columnA,tableB.columnB 
FROM tableA INNER JOIN tableB ON  tableA.aId = tableB.aId 
WHERE (TO_TIMESTAMP_TZ('1970-01-01 00:00:00 +10:00','yyyy-MM-dd hh24:mi:ss TZH:TZM') +    ((tableB.epochValue+(10*60*60*1000))/60/60/24/1000)) >  to_date('##FROM_DATE## +10:00', 'yyyy-MM-dd hh24:mi:ss TZH:TZM') 
AND (TO_TIMESTAMP_TZ('1970-01-01 00:00:00 +10:00','yyyy-MM-dd hh24:mi:ss TZH:TZM') + ((tableB.epochValue+(10*60*60*1000))/60/60/24/1000)) <= to_date('##TO_DATE## +10:00', 'yyyy-MM-dd hh24:mi:ss TZH:TZM');