Consider the following statements:
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);
These SELECT statements return the date for time zone displacement, INTERVAL -'08:00' HOUR TO MINUTE; that is, the statements return '08/05/31'. If the SELECT statements were specified without an AT clause or with an AT LOCAL clause, these statements would return '08/06/01' for the current session time zone displacement, INTERVAL '01:00' HOUR TO MINUTE.
The following shows the results of the SELECT statements if the AT clause was not specified:
SET TIME ZONE INTERVAL '01:00' HOUR TO MINUTE; SELECT CAST(TIMESTAMP '2008-05-31 22:30:00-08:00' AS DATE);
Result:
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;
Result:
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);
Result:
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);
Result:
2008-06-01 06:30:00+00:00 ------------------------- 08/06/01
SELECT TIMESTAMP '2008-06-01 07:30:00' (DATE);
Result:
2008-06-01 07:30:00 ------------------- 08/06/01
The following shows the results of the SELECT statements if the AT clause was not specified, and the current session time zone displacement is INTERVAL -'08:00' HOUR TO MINUTE.
SET TIME ZONE INTERVAL -'08:00' HOUR TO MINUTE; SELECT CAST(TIMESTAMP '2008-05-31 22:30:00-08:00' AS DATE);
Result:
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);
Result:
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);
Result:
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);
Result:
2008-06-01 07:30:00+01:00 ------------------------- 08/05/31