Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.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
Sql 如何使用UTC_偏移计算从其他美国时区转换的时间后的值的合计和_Sql_Oracle - Fatal编程技术网

Sql 如何使用UTC_偏移计算从其他美国时区转换的时间后的值的合计和

Sql 如何使用UTC_偏移计算从其他美国时区转换的时间后的值的合计和,sql,oracle,Sql,Oracle,我完全迷路了。在将所有时区转换为PST(太平洋标准时间;非DST时UTC_OFFSET=4,DST时UTC_OFFSET=5)后,我试图创建某一天所有值的总和。我想首先转换所有时区(基于UTC_偏移量和日期/时间戳,然后将日期/时间戳转换为日期,并根据日期进行求和/分组。我很难理解如何处理不可避免的DST(尤其是因为它发生在每年不同的日期)。我也不能100%确定我使用UTC_OFFSET的值从其他美国时区得出的PST的数学公式是否正确。我正在尝试将某一PST日的所有值相加,而不管数据从何处提取

我完全迷路了。在将所有时区转换为PST(太平洋标准时间;非DST时UTC_OFFSET=4,DST时UTC_OFFSET=5)后,我试图创建某一天所有值的总和。我想首先转换所有时区(基于UTC_偏移量和日期/时间戳,然后将日期/时间戳转换为日期,并根据日期进行求和/分组。我很难理解如何处理不可避免的DST(尤其是因为它发生在每年不同的日期)。我也不能100%确定我使用UTC_OFFSET的值从其他美国时区得出的PST的数学公式是否正确。我正在尝试将某一PST日的所有值相加,而不管数据从何处提取

下面是从utc转换到指定时区的utc偏移量

UTC_OFFSET:
4 (EST during DST)
5 (Central Time during DST, EST during NON DST)
6 (Mountain Time during DST, Central time during NON DST)
7 (PST during DST, Mountain Time during non dst)
8 (Pst during non dst)
以下是我拥有的一些样本数据:

During Daylight Savings Time
    Value        HR                                 UTC
    777          18-FEB-19 05.00.00.000000000 AM    4
    888          18-FEB-19 06.00.00.000000000 AM    5
      1          18-FEB-19 07.00.00.000000000 AM    6
      5          18-FEB-19 08.00.00.000000000 AM    7

During Non-Daylight Savings Time
Value        HR                                 UTC
777          18-FEB-19 05.00.00.000000000 AM    5
888          18-FEB-19 06.00.00.000000000 AM    6
  1          18-FEB-19 07.00.00.000000000 AM    7
  5          18-FEB-19 08.00.00.000000000 AM    8
预期产出(两者):

以下是我尝试过的:

select to_Char(HR - ((UTC_OFFSET - 2)/ 24), 'MM/DD/YYYY') as converted_pacific_time 
     , sum(value_tx)
from value
group by to_Char(HR - ((UTC_OFFSET - 2)/ 24), 'MM/DD/YYYY');

首先创建一个带有时区的
时间戳

FROM_TZ(HR, UTC_OFFSET||':00')
然后选择任意时区并按以下方式分组:

select sum(value_tx), FROM_TZ(HR, UTC_OFFSET||':00') at time zone 'UTC'
from value
group by FROM_TZ(HR, UTC_OFFSET||':00') at time zone 'UTC';
或UTC:

select sum(value_tx), SYS_EXTRACT_UTC(FROM_TZ(HR, UTC_OFFSET||':00'))
from value
group by SYS_EXTRACT_UTC(FROM_TZ(HR, UTC_OFFSET||':00'));
select sum(value_tx), SYS_EXTRACT_UTC(FROM_TZ(HR, UTC_OFFSET||':00'))
from value
group by SYS_EXTRACT_UTC(FROM_TZ(HR, UTC_OFFSET||':00'));