例 - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - データ タイプおよびリテラル

Product
Advanced SQL Engine
Teradata Database
Release Number
17.10
Published
2021年7月
Language
日本語
Last Update
2021-09-23
dita:mapPath
ja-JP/tpf1598412463935.ditamap
dita:ditavalPath
ja-JP/wrg1590696035526.ditaval
dita:id
B035-1143
Product Category
Software
Teradata Vantage

次の文を考えてみましょう。

SET TIME ZONE INTERVAL '10:00' HOUR TO MINUTE;
SELECT CAST((TIMESTAMP '2008-06-01 18:30:00+01:00' AT '05:45')
   AS DATE AT SOURCE);
SELECT CAST((TIMESTAMP '2008-06-01 18:30:00+01:00' AT 5.75)
   AS DATE AT SOURCE);
SELECT TIMESTAMP '2008-06-01 23:15:00+05:45' 
   (DATE, AT SOURCE TIME ZONE);
SELECT TIMESTAMP '2008-06-02 03:30:00' (DATE, AT '05:45');
SELECT TIMESTAMP '2008-06-02 03:30:00' (DATE, AT 5.75);

これらのSELECT文は、タイムゾーン変位INTERVAL '05:45' HOUR TO MINUTEの日付を返します。つまり、これらの文は'08/06/01'を返します。これらのSELECT文にAT句が指定されていない、またはAT LOCAL句が指定されている場合は、現在のセッションのタイムゾーン変位INTERVAL '10:00' HOUR TO MINUTEの'08/06/02'が返されることになります。

次に、AT句が指定されていなかった場合の、SELECT文の結果を示します。

SET TIME ZONE INTERVAL '10:00' HOUR TO MINUTE;
SELECT TIMESTAMP '2008-06-01 18:30:00+01:00'
   AT TIME ZONE INTERVAL '05:45' HOUR TO MINUTE;
2008-06-01 18:30:00+01:00 AT TIME ZONE INTERVAL  5:45 HOUR TO MINUTE
--------------------------------------------------------------------
                                           2008-06-01 23:15:00+05:45
SELECT CAST((TIMESTAMP '2008-06-01 18:30:00+01:00'
   AT TIME ZONE INTERVAL '05:45' HOUR TO MINUTE) AS DATE);
2008-06-01 18:30:00+01:00 AT TIME ZONE INTERVAL  5:45 HOUR TO MINUTE
--------------------------------------------------------------------
                                                            08/06/02
SELECT TIMESTAMP '2008-06-01 23:15:00+05:45' (DATE);
2008-06-01 23:15:00+05:45
-------------------------
                 08/06/02
SELECT TIMESTAMP '2008-06-02 03:30:00' (DATE);
2008-06-02 03:30:00
-------------------
           08/06/02

次に、現在のセッションのタイムゾーン変位がINTERVAL '05:45' HOUR TO MINUTEで、AT句が指定されていないSELECT文の結果を示します。

SET TIME ZONE INTERVAL '05:45' HOUR TO MINUTE;
SELECT CAST((TIMESTAMP '2008-06-01 18:30:00+01:00'
   AT TIME ZONE INTERVAL'05:45' HOUR TO MINUTE) AS DATE);
2008-06-01 18:30:00+01:00 AT TIME ZONE INTERVAL  5:45 HOUR TO MINUTE
--------------------------------------------------------------------
                                                            08/06/01
SELECT TIMESTAMP '2008-06-01 23:15:00+05:45' (DATE);
2008-06-01 23:15:00+05:45
-------------------------
                 08/06/01
SELECT CAST(TIMESTAMP '2008-06-02 03:30:00+10:00'
   AS TIMESTAMP(0)) (DATE);
2008-06-02 03:30:00+10:00
-------------------------
                 08/06/01