问题描述
你好,
1) 当我们执行以下查询时:
2) 当我们将Substr,to_char或to_date函数添加到sysd时,结果相差1小时。
谁能解释为什么我们的结果相差一个小时?
1) 当我们执行以下查询时:
with rws as ( (SELECT (FROM_TZ(CAST(sysdate AS TIMESTAMP), 'Europe/Paris') AT TIME ZONE (select nvl(timezone,'Europe/Paris') date1 from dim.nloqt_top_sit_d where sit = 'KE' )) sysd FROM DUAL) )Select sysd from rws; Result : 12-JUN-19 08.26.33.000000000 AM AFRICA/CASABLANCA
2) 当我们将Substr,to_char或to_date函数添加到sysd时,结果相差1小时。
with rws as ( (SELECT (FROM_TZ(CAST(sysdate AS TIMESTAMP), 'Europe/Paris') AT TIME ZONE (select nvl(timezone,'Europe/Paris') date1 from dim.nloqt_top_sit_d where sit = 'KE' )) sysd FROM DUAL) ) select substr(sysd,1,18) from rws; Result: 12-JUN-19 07.29.12
谁能解释为什么我们的结果相差一个小时?
专家解答
抱歉,我无法重现substr效果:
我的猜测: 巴黎和卡萨布兰卡相隔一小时。因此,由于某种原因,查询返回不同时区的日期。
alter session set nls_timestamp_tz_format = 'DD-MON-YY HH24:MI:SS TZR';
with rws as (
select from_tz (cast (sysdate as timestamp),'Europe/Paris')
at time zone 'Europe/Paris' sysd1,
from_tz (cast (sysdate as timestamp),'Europe/Paris')
at time zone 'AFRICA/CASABLANCA' sysd2
from dual
)
select sysd1, substr(sysd1,1,18),
sysd2, substr(sysd2,1,18)
from rws;
SYSD1 SUBSTR(SYSD1,1,18) SYSD2 SUBSTR(SYSD2,1,18)
13-JUN-19 15:41:13 EUROPE/PARIS 13-JUN-19 15:41:13 13-JUN-19 14:41:13 AFRICA/CASABLANCA 13-JUN-19 14:41:13
我的猜测: 巴黎和卡萨布兰卡相隔一小时。因此,由于某种原因,查询返回不同时区的日期。
文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




