Nogle gange er vi nødt til at angive en tidszone, når vi bruger datetime-funktioner i Oracle.
Men der er mange tidszoner derude. Hvordan husker vi dem alle? Og hvordan ved vi, at vores system understøtter en given tidszone?
Heldigvis kan vi forespørge på V$TIMEZONE_NAMES
visning for at returnere en liste over gyldige tidszoner.
Få oplysninger om alle tidszone
Følgende kode returnerer alle rækker og kolonner fra visningen:
SELECT * FROM V$TIMEZONE_NAMES;
Der er mange rækker i denne visning, men her er, hvordan de første 10 rækker ser ud:
TZNAME TZABBREV CON_ID _____________________ ___________ _________ Africa/Abidjan LMT 0 Africa/Abidjan GMT 0 Africa/Accra LMT 0 Africa/Accra GMT 0 Africa/Accra +0020 0 Africa/Addis_Ababa LMT 0 Africa/Addis_Ababa EAT 0 Africa/Addis_Ababa +0230 0 Africa/Addis_Ababa +0245 0 Africa/Algiers LMT 0 ...
Vi kan se, at hvert tidszoneområdes navn har mere end én tilsvarende forkortelse. Dette tager højde for ting som sommertid osv.
Her er en tabel, der skitserer, hvad nogle af forkortelserne betyder:
Tidszoneforkortelse | Betydning |
---|---|
LMT | Lokal gennemsnitstid |
PMT | Paris gennemsnitstid |
VÅD | Vesteuropæisk tid |
VEST | Vesteuropæisk sommertid |
CET | Centraleuropæisk tid |
CEST | Centraleuropas sommertid |
EET | Østeuropæisk tid |
EEST | Østeuropa sommertid |
Få kun regionsnavnene
Vi kan bruge DISTINCT
eller UNIQUE
klausul for kun at returnere tidszoneregionsnavnene uden dubletter.
SELECT DISTINCT TZNAME
FROM V$TIMEZONE_NAMES
ORDER BY TZNAME ASC;
Sådan ser de første 10 rækker ud nu:
TZNAME _____________________ Africa/Abidjan Africa/Accra Africa/Addis_Ababa Africa/Algiers Africa/Asmara Africa/Asmera Africa/Bamako Africa/Bangui Africa/Banjul Africa/Bissau ...
Få alle forkortelser for et givet tidszonenavn
Her er et eksempel på en forespørgsel, der returnerer alle forkortelserne for et givet tidszonenavn:
SELECT
TZNAME,
TZABBREV
FROM V$TIMEZONE_NAMES
WHERE TZNAME LIKE '%Sydney%'
ORDER BY TZNAME ASC;
Resultat:
TZNAME TZABBREV ___________________ ___________ Australia/Sydney LMT Australia/Sydney AEDT Australia/Sydney AEST
Om tidszonefiler
I Oracle Database er tidszonenavne indeholdt i tidszonefiler.
Du kan forespørge på V$TIMEZONE_FILE
visning for at se, hvilken tidszonefil der i øjeblikket bruges af databasen.
Eksempel:
SELECT * FROM V$TIMEZONE_FILE;
Resultat:
FILENAME VERSION CON_ID __________________ __________ _________ timezlrg_32.dat 32 0
Mit system bruger version 32, som er standardtidszonefilen for Oracle 19c (som er det, jeg bruger). Denne fil er placeret på følgende placering:$ORACLE_HOME/oracore/zoneinfo/timezlrg_32.dat
Se Oracles dokumentation for at vælge en tidszonefil for at få flere oplysninger om tidszonefiler.