次の文を考えてみましょう。
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