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
の間にある必要があります および+9999
、0
ではありません 。
現在の日付
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: