TIMEZONE and AT TIME ZONE functions
TIMEZONE
and AT TIME ZONE
convert a timestamp
or a timestamptz
to a different time zone.
Known limitation: You must explicitly cast the type for the time zone.
Signatures
Parameter | Type | Description |
---|---|---|
zone | text |
The target time zone. |
type | text or numeric |
The datatype in which the time zone is expressed |
timestamp | timestamp |
The timestamp without time zone. |
timestamptz | timestamptz |
The timestamp with time zone. |
Return values
TIMEZONE
and AT TIME ZONE
return timestamp
if the input is timestamptz
, and timestamptz
if the input is timestamp
.
Note: timestamp
and timestamptz
always store data in UTC, even if the date is returned as the local time.
Examples
Convert timestamp to another time zone, returned as UTC with offset
SELECT TIMESTAMP '2020-12-21 18:53:49' AT TIME ZONE 'America/New_York'::text;
timezone
------------------------
2020-12-21 23:53:49+00
(1 row)
SELECT TIMEZONE('America/New_York'::text,'2020-12-21 18:53:49');
timezone
------------------------
2020-12-21 23:53:49+00
(1 row)
Convert timestamp to another time zone, returned as specified local time
SELECT TIMESTAMPTZ '2020-12-21 18:53:49+08' AT TIME ZONE 'America/New_York'::text;
timezone
------------------------
2020-12-21 05:53:49
(1 row)
SELECT TIMEZONE ('America/New_York'::text,'2020-12-21 18:53:49+08');
timezone
------------------------
2020-12-21 05:53:49
(1 row)