PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Renvoyer une liste des fuseaux horaires pris en charge par PostgreSQL

Lorsque vous travaillez avec PostgreSQL, vous pouvez parfois vous retrouver dans une situation où vous avez besoin d'une liste de fuseaux horaires que PostgreSQL reconnaît.

Par exemple, vous pourriez essayer de définir le fuseau horaire pour votre session en cours, ou vous pourriez utiliser l'une des fonctions datetime qui vous permettent de manipuler le fuseau horaire.

Ci-dessous se trouvent deux vues et deux fonctions qui renvoient une liste de fuseaux horaires.

La vue pg_timezone_abbrevs

Le pg_timezone_abbrevs view fournit une liste des abréviations de fuseau horaire qui sont actuellement reconnues par les fonctions datetime.

Voici à quoi ressemblent les 10 premières lignes :

SELECT * 
FROM pg_timezone_abbrevs
LIMIT 10;

Résultat :

abbrev  | utc_offset | is_dst
--------+------------+--------
ACDT    | 10:30:00   | t
ACSST   | 10:30:00   | t
ACST    | 09:30:00   | f
ACT     | -05:00:00  | f
ACWST   | 08:45:00   | f
ADT     | -03:00:00  | t
AEDT    | 11:00:00   | t
AESST   | 11:00:00   | t
AEST    | 10:00:00   | f
AFT     | 04:30:00   | f

Le is_dst colonne indique s'il s'agit ou non d'une abréviation d'heure d'été.

Notez que le contenu de cette vue change lorsque le timezone_abbreviations paramètre d'exécution est modifié.

Notez également que la documentation de Postgres indique :

Alors que la plupart des abréviations de fuseau horaire représentent des décalages fixes par rapport à l'UTC, certaines ont historiquement varié en valeur (voir la section B.4 pour plus d'informations). Dans de tels cas, cette vue présente leur signification actuelle.

La fonction pg_timezone_abbrevs()

Vous pouvez également utiliser le pg_timezone_abbrevs() fonction pour renvoyer les résultats sous forme de SETOF.

SELECT pg_timezone_abbrevs()
LIMIT 10;

Résultat :

pg_timezone_abbrevs
-------------------
(ACDT,10:30:00,t)
(ACSST,10:30:00,t)
(ACST,09:30:00,f)
(ACT,-05:00:00,f)
(ACWST,08:45:00,f)
(ADT,-03:00:00,t)
(AEDT,11:00:00,t)
(AESST,11:00:00,t)
(AEST,10:00:00,f)
(AFT,04:30:00,f)

Vous pouvez également utiliser la syntaxe suivante pour renvoyer les résultats dans des colonnes séparées si nécessaire.

SELECT * 
FROM pg_timezone_abbrevs()
LIMIT 10;

Résultat :

abbrev  | utc_offset | is_dst
--------+------------+--------
ACDT    | 10:30:00   | t
ACSST   | 10:30:00   | t
ACST    | 09:30:00   | f
ACT     | -05:00:00  | f
ACWST   | 08:45:00   | f
ADT     | -03:00:00  | t
AEDT    | 11:00:00   | t
AESST   | 11:00:00   | t
AEST    | 10:00:00   | f
AFT     | 04:30:00   | f

La vue pg_timezone_names

Le pg_timezone_names view fournit une liste de noms de fuseaux horaires qui sont reconnus par SET TIMEZONE , ainsi que leurs abréviations associées, les décalages UTC et l'heure d'été.

Voici à quoi ressemblent les 10 premières lignes :

SELECT * 
FROM pg_timezone_names
LIMIT 10;

Résultat :

       name              | abbrev | utc_offset | is_dst 
------------------+--------+------------+--------
 Indian/Mauritius  | +04    | 04:00:00   | f
 Indian/Chagos     | +06    | 06:00:00   | f
 Indian/Mayotte    | EAT    | 03:00:00    | f
 Indian/Christmas  | +07    | 07:00:00    | f
 Indian/Cocos      | +0630  | 06:30:00    | f
 Indian/Maldives   | +05    | 05:00:00    | f
 Indian/Comoro     | EAT    | 03:00:00    | f
 Indian/Reunion    | +04    | 04:00:00    | f
 Indian/Mahe       | +04    | 04:00:00    | f
 Indian/Kerguelen  | +05    | 05:00:00    | f

Le is_dst La colonne indique si le fuseau horaire observe actuellement ou non l'heure d'été.

Pour cette vue, la documentation Postgres indique :

Contrairement aux abréviations affichées dans pg_timezone_abbrevs , nombre de ces noms impliquent un ensemble de règles de date de transition vers l'heure d'été. Par conséquent, les informations associées changent au-delà des limites DST locales. Les informations affichées sont calculées en fonction de la valeur actuelle de CURRENT_TIMESTAMP .

La fonction pg_timezone_names()

Vous pouvez également utiliser le pg_timezone_names() fonction pour renvoyer les résultats sous forme de SETOF.

SELECT pg_timezone_names()
LIMIT 10;

Résultat :

pg_timezone_names
---------------------------------
(Indian/Mauritius,+04,04:00:00,f)
(Indian/Chagos,+06,06:00:00,f)
(Indian/Mayotte,EAT,03:00:00,f)
(Indian/Christmas,+07,07:00:00,f)
(Indian/Cocos,+0630,06:30:00,f)
(Indian/Maldives,+05,05:00:00,f)
(Indian/Comoro,EAT,03:00:00,f)
(Indian/Reunion,+04,04:00:00,f)
(Indian/Mahe,+04,04:00:00,f)
(Indian/Kerguelen,+05,05:00:00,f)

Vous pouvez également utiliser la syntaxe suivante pour renvoyer les résultats dans des colonnes séparées.

SELECT * FROM pg_timezone_names()
LIMIT 10;

Résultat :

name              | abbrev | utc_offset | is_dst 
------------------+--------+------------+--------
Indian/Mauritius  | +04    | 04:00:00   | f
Indian/Chagos     | +06    | 06:00:00   | f
Indian/Mayotte    | EAT    | 03:00:00   | f
Indian/Christmas  | +07    | 07:00:00   | f
Indian/Cocos      | +0630  | 06:30:00   | f
Indian/Maldives   | +05    | 05:00:00   | f
Indian/Comoro     | EAT    | 03:00:00   | f
Indian/Reunion    | +04    | 04:00:00   | f
Indian/Mahe       | +04    | 04:00:00   | f
Indian/Kerguelen  | +05    | 05:00:00   | f