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

OracleのSYS_EXTRACT_UTC()関数

    Oracle Databaseでは、SYS_EXTRACT_UTC() 関数は、タイムゾーンオフセットまたはタイムゾーンリージョン名を使用して日時値からUTC(協定世界時)を抽出します。

    構文

    構文は次のようになります:

    SYS_EXTRACT_UTC(datetime_with_timezone)

    デモンストレーションの例を次に示します。

    SELECT 
    SYS_EXTRACT_UTC(TIMESTAMP '2035-08-25 10:30:45.123456789 +04:00')
    FROM DUAL;

    結果:

    25/AUG/35 06:30:45.123456789 AM

    結果の形式は、NLS_TIMESTAMP_FORMATの値によって異なります。 パラメータ。このパラメータのデフォルト値は、NLS_TERRITORYから派生しています。 パラメータ。これらのいずれかを変更すると、SYS_EXTRACT_UTC()の形式が変更される可能性があります セッションの機能。

    例:

    ALTER SESSION SET NLS_TIMESTAMP_FORMAT = 'DD-MON-RRRR HH24:MI:SSXFF';
    SELECT 
    SYS_EXTRACT_UTC(TIMESTAMP '2035-08-25 10:30:45.123456789 +04:00')
    FROM DUAL;

    結果:

    25-AUG-2035 06:30:45.123456789

    NLS_TERRITORYを設定すると次のようになります。 AMERICAへのパラメータ :

    ALTER SESSION SET NLS_TERRITORY = 'AMERICA';
    SELECT 
    SYS_EXTRACT_UTC(TIMESTAMP '2035-08-25 10:30:45.123456789 +04:00')
    FROM DUAL;

    結果:

    25-AUG-35 06.30.45.123456789 AM

    このパラメータを変更すると、NLS_TIMESTAMP_FORMATが暗黙的に設定されます。 AMERICAの形式に 。

    詳細と例については、セッションの日付形式を変更する方法をご覧ください。

    タイムゾーンリージョン名

    または、タイムゾーンオフセットの代わりにタイムゾーンリージョン名を使用することもできます。

    例:

    SELECT 
    SYS_EXTRACT_UTC(TIMESTAMP '2035-08-25 10:30:45.123456789 Asia/Bangkok')
    FROM DUAL;

    結果:

    25-AUG-35 03.30.45.123456789 AM

    デフォルトのタイムゾーン

    タイムゾーンが指定されていない場合、日時はセッションのタイムゾーンに関連付けられます。

    例:

    SELECT SYS_EXTRACT_UTC(TIMESTAMP '2035-08-25 10:30:45.123456789')
    FROM DUAL;

    結果:

    25-AUG-35 12.30.45.123456789 AM

    SESSIONTIMEZONEを使用して、現在のセッションのタイムゾーンを確認できます。 機能:

    SELECT SESSIONTIMEZONE
    FROM DUAL;

    結果:

    Australia/Brisbane

    これを変更する例については、Oracleでタイムゾーンを変更する4つの方法を参照してください。

    ヌル引数

    nullを渡す エラーが発生します:

    SELECT SYS_EXTRACT_UTC(null)
    FROM DUAL;

    結果:

    Error starting at line : 1 in command -
    SELECT SYS_EXTRACT_UTC(null)
    FROM DUAL
    Error at Command Line : 1 Column : 24
    Error report -
    SQL Error: ORA-30175: invalid type given for an argument
    30175. 00000 -  "invalid type given for an argument"
    *Cause:    There is an argument with an invalid type in the argument list.
    *Action:   Use the correct type wrapper for the argument.

    引数がありません

    引数の数が間違っているか、引数を渡さずに関数を呼び出すと、エラーが発生します:

    SELECT SYS_EXTRACT_UTC()
    FROM DUAL;

    結果:

    Error starting at line : 1 in command -
    SELECT SYS_EXTRACT_UTC()
    FROM DUAL
    Error at Command Line : 1 Column : 8
    Error report -
    SQL Error: ORA-00909: invalid number of arguments
    00909. 00000 -  "invalid number of arguments"
    *Cause:    
    *Action:

    1. Postgresウィンドウ関数とgroupby例外

    2. MySqlは、日次、週次、月次、および年次でレコードまたはデータを取得します

    3. Fluent NHibernateおよびPostgreSQL、SchemaMetadataUpdater.QuoteTableAndColumns-System.NotSupportedException:指定されたメソッドはサポートされていません

    4. GROUP BYを使用してMySQLで文字列を連結するにはどうすればよいですか?