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

Oracleの日時値からタイムゾーンを返す3つの方法

    以下は、OracleDatabaseの日時値からタイムゾーン情報を返す3つの方法です。

    EXTRACT() 機能

    EXTRACT(datetime) 関数は、日時値からさまざまな日時部分を抽出するために使用されます。これにはタイムゾーン情報が含まれます。

    次に例を示します:

    SELECT EXTRACT(
    TIMEZONE_REGION FROM TIMESTAMP '2035-09-26 10:30:45 Australia/Darwin'
    )
    FROM DUAL;

    結果:

    Australia/Darwin

    この場合、TIMEZONE_REGIONを使用しました タイムゾーン領域を抽出するための引数。

    さまざまなタイムゾーン情報を抽出するために使用できる引数は次のとおりです。

    • TIMEZONE_HOUR
    • TIMEZONE_MINUTE
    • TIMEZONE_REGION
    • TIMEZONE_ABBR

    TIMEZONE_OFFSETを使用することもできます 引数。ただし、これは、この関数のOracleの文書化された構文には表示されません。

    タイムゾーンの省略形を取得する例は次のとおりです。

    SELECT 
        EXTRACT(TIMEZONE_ABBR FROM TIMESTAMP '2035-09-26 10:30:45 Australia/Darwin')
    FROM DUAL;

    結果:

    ACST

    上記のタイムゾーン引数を使用する場合、日時値はデータ型TIMESTAMP WITH TIME ZONEの式に評価される必要があることに注意してください。 またはTIMESTAMP WITH LOCAL TIME ZONE

    EXTRACT() 関数は、YEARなどの他の日時部分の引数も受け入れます。 、MONTHHOUR 、など。

    TO_CHAR(datetime) 機能

    TO_CHAR(datetime)を使用することもできます 日時値からタイムゾーン情報を取得するための代替方法として機能します。

    この関数は、最初の引数として日時または間隔の値を受け入れ、2番目の引数としてフォーマットモデルを受け入れます。次に、関数は値をVARCHAR2のデータ型に変換します 指定された形式で。

    formatモデルは、datetime/interval値を返すフォーマットを指定します。フォーマットモデルは、1つ以上のフォーマット要素で構成されます。これにより、目的の形式を反映するように慎重に結果を作成できます。

    タイムゾーン情報のみを返したい場合は、その特定の目的のためにフォーマット要素の1つを使用できます。

    日時値からタイムゾーン情報を返すときに使用できるいくつかの異なる形式要素があります。

    TZRから始めましょう フォーマット要素:

    SELECT TO_CHAR(
        TIMESTAMP '2035-09-26 10:30:45 Australia/Darwin', 
        'TZR'
        )
    FROM DUAL;

    結果:

    Australia/Darwin

    このformat要素は、タイムゾーン領域を返します。日時の値にタイムゾーンオフセットのみが含まれている場合は、代わりにそれが返されます。

    TZD format要素は、夏時間情報を返すために使用できます。タイムゾーン情報を省略形で返します。

    例:

    SELECT TO_CHAR(
        TIMESTAMP '2035-09-26 10:30:45 Australia/Darwin', 
        'TZD'
        )
    FROM DUAL;

    結果:

    ACST

    または、TZHを使用することもできます およびTZM タイムゾーンオフセットに基づいて、タイムゾーンの時間と分を返すように要素をフォーマットします。

    SELECT TO_CHAR(
        TIMESTAMP '2035-09-26 10:30:45 Australia/Darwin', 
        'TZH:TZM'
        )
    FROM DUAL;

    結果:

    +09:30

    TZ_OFFSET() 機能

    TZ_OFFSET() 関数は、ステートメントが実行された日付に基づいて、引数に対応するタイムゾーンオフセットを返します。

    TZ_OFFSET()の使用例を次に示します。 EXTRACT()によって返されるタイムゾーン領域に基づいてタイムゾーンオフセットを返す 機能:

    SELECT TZ_OFFSET(
        EXTRACT(TIMEZONE_REGION FROM TIMESTAMP '2035-09-26 10:30:45 Australia/Darwin')
    )
    FROM DUAL;

    結果:

    +09:30

    SESSIONTIMEZONEを渡すこともできます またはDBTIMEZONE TZ_OFFSET()へ 現在のセッションとデータベースのタイムゾーンをそれぞれ返すには:

    SELECT 
        TZ_OFFSET(SESSIONTIMEZONE) AS "Session",
        TZ_OFFSET(DBTIMEZONE) AS "DB"
    FROM DUAL;

    結果:

       Session        DB 
    __________ _________ 
    +10:00     +00:00    

    1. RHEL、Rocky、AlmaLinuxでMySQLレプリケーションを設定する方法

    2. JPAでPostgresJSONBデータ型を使用するにはどうすればよいですか?

    3. ログオントリガーをドロップしようとすると「トリガーをドロップできません」エラーが発生しますか?これを試して。

    4. Oracleのシーケンスの値をリセットする必要があります