2014-11-04 235 views
0

以下是我們在數據庫中的一個查詢,我想了解我們查詢中的一些UTC對話。Oracle SYS_EXTRACT_UTC試圖瞭解

有人可以簡單解釋一下,下面的查詢正在做什麼?

SELECT 
CAST (SYS_EXTRACT_UTC (CAST ((BEGIN_DATE - (3/24)) AS TIMESTAMP)) AS DATE) BEGIN_DATE 
FROM offer o 
WHERE mask  = 'OK' 

AFTER轉換輸出:06-SEP-11 4時○○分00秒

SELECT 
    BEGIN_DATE 
FROM offer o 
WHERE mask  = 'OK' 

轉換之前OUTPUT:06-SEP-11 00:00:00

回答

0

SYS_EXTRACT_UTC提取UTC(協調通用時間格林威治平均時間)datetime值與time zone offsettime zone region name

例如,

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> 
+0

見我的編輯,我解釋了吧。 3/24意味着8小時。你的時區是8小時後。要從一天中扣除8小時,您需要將小時轉換爲日單位。所以,8小時是'3/24'天。 – 2014-11-04 07:45:38