Oracle时区将UTC转换为PST
我需要使用计划开始时间(PST)和计划结束时间(PST)检查正在进行的任务。数据类型是时间戳,带有计划开始时间和计划结束时间的时区 sysdate(UTC)应介于开始日期和结束日期之间,以确认正在进行的任务Oracle时区将UTC转换为PST,oracle,timezone,timestamp,Oracle,Timezone,Timestamp,我需要使用计划开始时间(PST)和计划结束时间(PST)检查正在进行的任务。数据类型是时间戳,带有计划开始时间和计划结束时间的时区 sysdate(UTC)应介于开始日期和结束日期之间,以确认正在进行的任务 JIRA_KEY sch_start_time sch_end_time 1 11/04/2016 1:00:00 AM PST 14/04/2016 2:00:00 PM PST 2 12/04/2016 2:00:00
JIRA_KEY sch_start_time sch_end_time
1 11/04/2016 1:00:00 AM PST 14/04/2016 2:00:00 PM PST
2 12/04/2016 2:00:00 AM PST 12/04/2016 5:00:00 AM PST
3 12/04/2016 2:00:00 AM PST 14/04/2016 5:00:00 AM PST
预期产量-
JIRA_KEY sch_start_time sch_end_time
1 11/APR/2016 1:00:00 AM PST 14/APR/2016 2:00:00 PM PST
3 12/APR/2016 2:00:00 AM PST 14/APR/2016 5:00:00 AM PST
SYSDATE以UTC为单位,截至目前为2016年4月13日上午8:15
我试过这个。但不确定使用to_timestamp_tz的转换
select JIRA_KEY,To_CHAR( SCH_END_TIME,'DD/MON/YY HH:MI:SS PM') as SCH_END_TIME
FROM HW_JIRA_STATUS WHERE
to_timestamp_tz(SYSDATE,'DD/MON/YY HH:MI:SS PM') between SCH_START_TIME and SCH_END_TIME
请尝试此查询
select JIRA_KEY,To_CHAR( SCH_END_TIME,'DD/MON/YY HH:MI:SS PM') as SCH_END_TIME
FROM HW_JIRA_STATUS
WHERE systimestamp AT TIME ZONE 'PST' between SCH_START_TIME and SCH_END_TIME
当你这样做的时候
to_timestamp_tz(SYSDATE,'DD/MON/YY HH:MI:SS PM')
您正在使用NLS_DATE_格式将SYSDATE隐式转换为字符串,然后将该字符串转换为带有时区的时间戳-但您没有指定时区,因此默认情况下它将使用数据库时区(这是您想要的)
依赖NLS设置是危险的,因此您至少应该使用expliclt格式掩码:
to_timestamp_tz(to_char(SYSDATE, 'DD/MON/YY HH:MI:SS PM'),'DD/MON/YY HH:MI:SS PM')
。。。但也可以不转换为中间字符串;e、 g.再次使用DB服务器时区:
cast(SYSDATE as timestamp with time zone)
你不需要自己做任何转换;您可以改用SYSTIMESTAMP:
WHERE SYSTIMESTAMP between SCH_START_TIME and SCH_END_TIME;
已经在DB服务器的时区中