Oracle系统解压UTC试图理解

Oracle系统解压UTC试图理解,oracle,Oracle,这是我们在数据库中的一个查询,我试图理解查询中的一些UTC对话 有人能简单地解释一下,下面的查询在做什么吗 SELECT CAST (SYS_EXTRACT_UTC (CAST ( (BEGIN_DATE - (3 / 24)) AS TIMESTAMP)) AS DATE) BEGIN_DATE FROM offer o WHERE mask = 'OK' 转换后输出:2011年9月6日04:00:00 SELECT BEGIN_DATE FROM offer o W

这是我们在数据库中的一个查询,我试图理解查询中的一些UTC对话

有人能简单地解释一下,下面的查询在做什么吗

SELECT 
 CAST (SYS_EXTRACT_UTC (CAST ( (BEGIN_DATE - (3 / 24)) AS TIMESTAMP)) AS DATE) BEGIN_DATE
FROM offer o
WHERE mask       = 'OK'
转换后输出:2011年9月6日04:00:00

SELECT 
   BEGIN_DATE
FROM offer o
WHERE mask       = 'OK'
转换输出前:2011年9月6日00:00:00

SYS\u EXTRACT\u UTC从带有时区偏移量或时区区域名称的日期时间值中提取UTC协调世界时(以前为格林威治标准时间)

比如说,

SQL> SELECT SYS_EXTRACT_UTC(TIMESTAMP '2014-11-05 12:00:00.00 -08:00') as dt
  2     FROM DUAL;

DT
---------------------------------------------------------------------------
05-NOV-14 08.00.00.000000000 PM

SQL>
在您的情况下,您的时区是-08:00。因此,使用-3/24

例如,我的时区是+05:30。现在是,

SQL> select to_char(sysdate, 'mm/dd/yyyy hh:mi:ss am') dt from dual;

DT
----------------------
11/04/2014 01:12:21 pm

SQL>
UTC时间当量为

SQL> SELECT SYS_EXTRACT_UTC(TIMESTAMP '2014-11-05 01:12:21.00 +05:30') as dt
  2     FROM DUAL;

DT
---------------------------------------------------------------------------
04-NOV-14 07.42.21.000000000 PM

SQL>

看我的编辑,我解释了。3/24意味着8小时。你的时区落后8小时。要从一天中扣除8小时,您需要将小时转换为日单位。所以,8小时就是3/24天。