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

OracleのLOCALTIMESTAMP()関数

    Oracle Databaseでは、LOCALTIMESTAMP() 関数は、セッションタイムゾーンの現在の日付と時刻をデータ型TIMESTAMPの値で返します。 。

    CURRENT_TIMESTAMPに似ています 、ただしCURRENT_TIMESTAMP TIMESTAMP WITH TIME ZONEを返します 値。

    構文

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

    LOCALTIMESTAMP [ (timestamp_precision) ]

    オプションのtimestamp_precision 引数は、返される時間値の2分の1の精度を指定します。

    引数なしで関数を呼び出す場合は、括弧を省略してください。

    精度を指定せずに関数を呼び出す例を次に示します。

    SELECT LOCALTIMESTAMP
    FROM DUAL;

    結果:

    07/AUG/21 08:49:50.026443000 AM

    この例では、システムのNLS_DATE_FORMATの値に基づいた形式で日付を表示します パラメータ(現在はDD/MON/RR )。このパラメーターは、NLS_TERRITORYから値を取得します。 パラメータ(私のものはAUSTRALIAです )。

    これらのパラメータを変更するオプションがあります(たとえば、Oracleセッションで日付形式を変更する方法を参照)。

    または、TO_CHAR()のような関数を使用することもできます 結果を別の形式で返します。

    例:

    SELECT TO_CHAR(LOCALTIMESTAMP, 'YYYY-MM-DD HH24:MI:SS')
    FROM DUAL;

    結果:

    2021-08-07 08:50:20

    精度

    精度を指定する例を次に示します。これにより、返される時間値の秒単位の精度が決まります。

    SELECT LOCALTIMESTAMP(9)
    FROM DUAL;

    結果:

    07/AUG/21 08:50:47.203717000 AM

    精度引数は0から9までの数値でなければならないことに注意してください。

    その範囲外の値を渡すと、次のようになります。

    SELECT LOCALTIMESTAMP(10)
    FROM DUAL;

    結果:

    Error starting at line : 1 in command -
    SELECT LOCALTIMESTAMP(10)
    FROM DUAL
    Error at Command Line : 1 Column : 23
    Error report -
    SQL Error: ORA-30088: datetime/interval precision is out of range
    30088. 00000 -  "datetime/interval precision is out of range"
    *Cause:    The specified datetime/interval precision was not between 0 and 9.
    *Action:   Use a value between 0 and 9 for datetime/interval precision.

    精度を指定せずに括弧を省略する

    前述のように、LOCALTIMESTAMPを呼び出す場合 precisionを渡さずに 引数の場合、括弧を省略する必要があります。

    精度を指定せずに括弧を含めると、次のようになります。

    SELECT LOCALTIMESTAMP()
    FROM DUAL;

    結果:

    Error starting at line : 1 in command -
    SELECT LOCALTIMESTAMP()
    FROM DUAL
    Error at Command Line : 1 Column : 23
    Error report -
    SQL Error: ORA-30088: datetime/interval precision is out of range
    30088. 00000 -  "datetime/interval precision is out of range"
    *Cause:    The specified datetime/interval precision was not between 0 and 9.
    *Action:   Use a value between 0 and 9 for datetime/interval precision.

    前の例と同じエラーが発生します。 Oracle Databaseは0から9までの精度の引数を探していますが、何も渡しませんでした。

    ヌル引数

    nullを渡すときにも同じエラーが発生します :

    SELECT LOCALTIMESTAMP(null)
    FROM DUAL;

    結果:

    Error starting at line : 1 in command -
    SELECT LOCALTIMESTAMP(null)
    FROM DUAL
    Error at Command Line : 1 Column : 23
    Error report -
    SQL Error: ORA-30088: datetime/interval precision is out of range
    30088. 00000 -  "datetime/interval precision is out of range"
    *Cause:    The specified datetime/interval precision was not between 0 and 9.
    *Action:   Use a value between 0 and 9 for datetime/interval precision.

    1. 信号処理データモデルを使用して信号を追跡する

    2. MySQLでのUCASE()関数のしくみ

    3. SQL Developerを使用してOracleでスキーマを作成するにはどうすればよいですか?

    4. PostgreSQLを使用したマルチデータセンターのセットアップ