sql >> データベース >  >> RDS >> Oracle

OracleDatabaseで有効なタイムゾーンのリストを返す方法

    Oracleで日時関数を使用するときに、タイムゾーンを指定する必要がある場合があります。

    しかし、そこには多くのタイムゾーンがあります。それらすべてをどのように覚えていますか?また、システムが特定のタイムゾーンをサポートしていることをどのようにして知ることができますか?

    幸い、V$TIMEZONE_NAMESをクエリできます。 有効なタイムゾーンのリストを返すために表示します。

    すべてのタイムゾーン情報を取得

    次のコードは、ビューからすべての行と列を返します。

    SELECT * FROM V$TIMEZONE_NAMES;

    このビューには多くの行がありますが、最初の10行は次のようになります。

                   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 
    ...

    各タイムゾーンのリージョン名には、対応する略語が複数あることがわかります。これは、夏時間などに対応します。

    いくつかの略語の意味を概説した表を次に示します。

    タイムゾーンの省略形 意味
    LMT 地方平均時
    PMT パリの平均時間
    ウェット 西ヨーロッパ時間
    WEST 西ヨーロッパ夏時間
    CET 中央ヨーロッパ時間
    CEST 中央ヨーロッパの夏の時間
    EET 東ヨーロッパ時間
    EEST 東ヨーロッパの夏の時間

    地域名だけを取得

    DISTINCTを使用できます またはUNIQUE 重複することなくタイムゾーンリージョン名のみを返す句。

    SELECT DISTINCT TZNAME 
    FROM V$TIMEZONE_NAMES
    ORDER BY TZNAME ASC;

    最初の10行は次のようになります。

                   TZNAME 
    _____________________ 
    Africa/Abidjan        
    Africa/Accra          
    Africa/Addis_Ababa    
    Africa/Algiers        
    Africa/Asmara         
    Africa/Asmera         
    Africa/Bamako         
    Africa/Bangui         
    Africa/Banjul         
    Africa/Bissau         
    ...

    特定のタイムゾーン名のすべての略語を取得

    特定のタイムゾーン名のすべての略語を返すクエリの例を次に示します。

    SELECT 
        TZNAME,
        TZABBREV
    FROM V$TIMEZONE_NAMES
    WHERE TZNAME LIKE '%Sydney%'
    ORDER BY TZNAME ASC;

    結果:

                 TZNAME    TZABBREV 
    ___________________ ___________ 
    Australia/Sydney    LMT         
    Australia/Sydney    AEDT        
    Australia/Sydney    AEST        

    タイムゾーンファイルについて

    Oracle Databaseでは、タイムゾーン名はタイムゾーンファイルに含まれています。

    V$TIMEZONE_FILEをクエリできます データベースで現在使用されているタイムゾーンファイルを確認するために表示します。

    例:

    SELECT * FROM V$TIMEZONE_FILE;

    結果:

              FILENAME    VERSION    CON_ID 
    __________________ __________ _________ 
    timezlrg_32.dat            32         0 

    私のシステムはバージョン32を使用しています。これは、Oracle 19cのデフォルトのタイムゾーンファイルです(これは私が使用しているものです)。このファイルは次の場所にあります:$ORACLE_HOME/oracore/zoneinfo/timezlrg_32.dat

    タイムゾーンファイルの詳細については、タイムゾーンファイルの選択に関するOracleのドキュメントを参照してください。


    1. 主キーにignore_dup_keyをオンに設定できますか?

    2. SQL Serverの動的PIVOTクエリ?

    3. SQL Server Management Studio(SSMS)の個別のタブにクエリと結果を表示する方法-SQL Server/TSQLチュートリアルパート15

    4. GI12.2の変更