Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle时区将UTC转换为PST_Oracle_Timezone_Timestamp - Fatal编程技术网

Oracle时区将UTC转换为PST

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

我需要使用计划开始时间(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 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服务器的时区中