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

OracleのLAST_DAY()関数

    Oracle Databaseでは、LAST_DAY() 関数は、指定された日付を含む月の最終日を返します。

    1つの引数を受け入れます。これは、その月の最後の日を検索する日付です。

    構文

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

    LAST_DAY(date)

    date は、その月の最後の日を検索する日付式です。

    次に例を示します:

    SELECT LAST_DAY(DATE '2030-02-01')
    FROM DUAL;

    結果:

    28-FEB-30

    この場合、2月の日付を使用しています。実は、2月はその年に28日あります。

    日付を次のうるう年にインクリメントすると、次のようになります。

    SELECT LAST_DAY(DATE '2032-02-01')
    FROM DUAL;

    結果:

    29-FEB-32

    月の最終日は、セッションパラメータNLS_CALENDARによって定義されます。 。セッションで使用されているカレンダーを確認するには、「NLSパラメーターの値を確認する方法」を参照してください。鉱山はグレゴリオ暦を使用しています。

    また、日付はセッションに指定された形式で返されます。この例では、セッションでNLS_TERRITORYのデフォルト形式を使用しています。 パラメータがAMERICAに設定されている 。必要に応じて、セッションの日時形式をいつでも変更できます。

    その他の日時値

    TIMESTAMPなどの他の日時値でも機能します 、など:

    SELECT LAST_DAY(TIMESTAMP '2030-02-01 10:30:45.34567')
    FROM DUAL;

    結果:

    28-FEB-30

    ただし、戻りタイプは常にDATEです。 、引数のデータ型に関係なく。

    範囲外の日付

    ゼロの日付やその他の範囲外の日付はエラーになります。

    例:

    SELECT LAST_DAY(DATE '0000-00-00')
    FROM DUAL;

    結果:

    Error starting at line : 1 in command -
    SELECT LAST_DAY(DATE '0000-00-00')
    FROM DUAL
    Error at Command Line : 1 Column : 22
    Error report -
    SQL Error: ORA-01841: (full) year must be between -4713 and +9999, and not be 0
    01841. 00000 -  "(full) year must be between -4713 and +9999, and not be 0"
    *Cause:    Illegal year entered
    *Action:   Input year in the specified range
    >

    エラーメッセージに示されているように、(通年の)年は-4713の間にある必要があります および+99990ではありません 。

    現在の日付

    SYSDATEを渡すことができます 現在の日付を使用する日時引数として:

    SELECT 
        SYSDATE,
        LAST_DAY(SYSDATE)
    FROM DUAL;

    結果:

         SYSDATE    LAST_DAY(SYSDATE) 
    ____________ ____________________ 
    12-AUG-21    31-AUG-21           

    引数がありません

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

    SELECT LAST_DAY()
    FROM DUAL;

    結果:

    Error starting at line : 1 in command -
    SELECT LAST_DAY()
    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. ダミーのチートシートのアクセス2021

    2. MySQL:エラーコード:1118行サイズが大きすぎます(> 8126)。一部の列をTEXTまたはBLOBに変更する

    3. SQLServerで日付範囲を1か月に1行に分割する

    4. MySQLダンプでこれらのコメントを取り除くにはどうすればよいですか?