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

OracleのCURRENT_TIMESTAMP()関数

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

    LOCALTIMESTAMPに似ています 、ただしLOCALTIMESTAMP TIMESTAMPを返します 値。

    構文

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

    CURRENT_TIMESTAMP [ (precision) ]

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

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

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

    SELECT CURRENT_TIMESTAMP
    FROM DUAL;

    結果:

    06/AUG/21 08:32:31.165866000 AM AUSTRALIA/BRISBANE

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

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

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

    例:

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

    結果:

    2021-08-06 08:44:39

    精度

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

    SELECT CURRENT_TIMESTAMP(9)
    FROM DUAL;

    結果:

    06/AUG/21 09:02:37.868264000 AM AUSTRALIA/BRISBANE

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

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

    SELECT CURRENT_TIMESTAMP(10)
    FROM DUAL;

    結果:

    Error starting at line : 1 in command -
    SELECT CURRENT_TIMESTAMP(10)
    FROM DUAL
    Error at Command Line : 1 Column : 26
    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.

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

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

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

    SELECT CURRENT_TIMESTAMP()
    FROM DUAL;

    結果:

    Error starting at line : 1 in command -
    SELECT CURRENT_TIMESTAMP()
    FROM DUAL
    Error at Command Line : 1 Column : 26
    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 CURRENT_TIMESTAMP(null)
    FROM DUAL;

    結果:

    Error starting at line : 1 in command -
    SELECT CURRENT_TIMESTAMP(null)
    FROM DUAL
    Error at Command Line : 1 Column : 26
    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. Webアプリケーション用のMySQLとPostgreSQL

    2. 日ごとにカウント/グループ化し、データのない日を表示するPostgreSQLクエリ

    3. PostgreSQL8.3以降の全文検索

    4. 回復オプションがある場合と回復オプションがない場合のSQLServer復元データベースの調査