16.20 - 例 - Teradata Vantage NewSQL Engine

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

prodname
Teradata Database
Teradata Vantage NewSQL Engine
vrm_release
16.20
category
プログラミング リファレンス
featnum
B035-1143-162K-JPN

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

SET TIME ZONE INTERVAL '01:00' HOUR TO MINUTE;
SELECT CAST(TIMESTAMP '2008-05-31 22:30:00-08:00' 
   AS DATE AT SOURCE TIME ZONE);
SELECT TIMESTAMP '2008-06-01 06:30:00+00:00' AT '-08:00' 
   (DATE, AT SOURCE);
SELECT TIMESTAMP '2008-06-01 06:30:00+00:00' (DATE, AT -8);
SELECT TIMESTAMP '2008-06-01 07:30:00' (DATE, AT -8);

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

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

SET TIME ZONE INTERVAL '01:00' HOUR TO MINUTE;
SELECT CAST(TIMESTAMP '2008-05-31 22:30:00-08:00' AS DATE);
2008-05-31 22:30:00-08:00
-------------------------
                 08/06/01
SELECT TIMESTAMP '2008-06-01 06:30:00+00:00'
   AT TIME ZONE INTERVAL -'08:00' HOUR TO MINUTE;
2008-06-01 06:30:00+00:00 AT TIME ZONE INTERVAL -8:00 HOUR TO MINUTE
--------------------------------------------------------------------
                                           2008-05-31 22:30:00-08:00
SELECT TIMESTAMP '2008-06-01 06:30:00+00:00'
   AT TIME ZONE INTERVAL -'08:00' HOUR TO MINUTE (DATE);
2008-06-01 06:30:00+00:00 AT TIME ZONE INTERVAL -8:00 HOUR TO MINUTE
--------------------------------------------------------------------
                                                            08/06/01
SELECT TIMESTAMP '2008-06-01 06:30:00+00:00' (DATE);
2008-06-01 06:30:00+00:00
-------------------------
                 08/06/01
SELECT TIMESTAMP '2008-06-01 07:30:00' (DATE);
2008-06-01 07:30:00
-------------------
           08/06/01

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

SET TIME ZONE INTERVAL -'08:00' HOUR TO MINUTE;
SELECT CAST(TIMESTAMP '2008-05-31 22:30:00-08:00' AS DATE);
2008-05-31 22:30:00-08:00
-------------------------
                 08/05/31
SELECT TIMESTAMP '2008-06-01 06:30:00+00:00'
   AT TIME ZONE INTERVAL -'08:00' HOUR TO MINUTE (DATE);
2008-06-01 06:30:00+00:00 AT TIME ZONE INTERVAL -8:00 HOUR TO MINUTE
--------------------------------------------------------------------
                                                            08/05/31
SELECT TIMESTAMP '2008-06-01 06:30:00+00:00' (DATE);
2008-06-01 06:30:00+00:00
-------------------------
                 08/05/31
SELECT CAST(TIMESTAMP '2008-06-01 07:30:00+01:00' 
   AS TIMESTAMP(0)) (DATE);
2008-06-01 07:30:00+01:00
-------------------------
                 08/05/31