すべてのプロダクト
Search
ドキュメントセンター

MaxCompute:LAST_DAY

最終更新日:Nov 26, 2025

`LAST_DAY` 関数は、入力された date に対し、指定された時間単位 date_part の最終日を返します。

構文

DATE|STRING LAST_DAY(DATE|DATETIME|TIMESTAMP|TIMESTAMP_NTZ|STRING <date>[, STRING <date_part>])

-- 標準的な例。
-- 戻り値は 2025-10-31 です。
SELECT LAST_DAY('2025-10-01');

パラメーター

  • date:必須。 `DATE`、`DATETIME`、`TIMESTAMP`、`TIMESTAMP_NTZ`、または `STRING` データ型の値。

    入力が `STRING` 値の場合、日付フォーマットには yyyy-mm-dd を含める必要があります。

  • date_part:オプション。 計算の時間単位を指定する `STRING` 定数です。 このパラメーターを省略した場合、関数はデフォルトで月の最終日を返します。 このパラメーターでは、次の値がサポートされています:

    時間単位

    値

    年

    year または yyyy

    ISO 年

    isoyear は、ISO 8601 週番号システムにおける年の境界を使用します。 ISO 年の境界は、その年の最初の週の月曜日です。 最初の週とは、グレゴリオ暦年の最初の木曜日を含む週のことです。

    四半期

    quarter または q

    月

    month または mon または mm

    週

    • week:週は月曜日に始まります。 これは week(monday) と同等です。

    • week(weekday):週は指定された曜日 (weekday) に始まります。

      有効な値:`SUNDAY`、`MONDAY`、`TUESDAY`、`WEDNESDAY`、`THURSDAY`、`FRIDAY`、`SATURDAY`。

    ISO 週

    isoweek は、ISO 8601 で定義されている週の境界を使用します。 ISO 週は月曜日に始まります。

戻り値

`DATE` または `STRING` 型の値を返します。 次のルールが適用されます:

  • date_part を指定した場合、`DATE` 型の値が返されます。 date_part を指定しない場合、yyyy-mm-dd フォーマットの `STRING` 型の値が返されます。

  • date の値が `DATE`、`DATETIME`、`TIMESTAMP`、`TIMESTAMP_NTZ`、または `STRING` データ型でない場合、またはフォーマットが無効な場合、関数は `NULL` またはエラーを返します。

  • date の値が `NULL` の場合、関数はエラーを返します。

例

  • 例 1:基本的な日付入力。

    -- 戻り値は 2025-03-31 です。
    SELECT LAST_DAY('2025-03-04');
    
    -- 戻り値は 2025-07-31 です。
    SELECT LAST_DAY('2025-07-04 11:40:00');
  • 例 2:`NULL` 値または無効な文字列を渡す。

    -- エラーが返されます。
    SELECT LAST_DAY(NULL,'isoyear');
    
    -- 戻り値は NULL です。
    SELECT LAST_DAY('20250304'); 
  • 例 3:`'MONTH'`、`'YEAR'`、`'QUARTER'` などの時間単位を指定する。

    -- 戻り値は 2025-03-31 です。
    SELECT LAST_DAY('2025-03-27 11:40:00','MONTH');
    
    -- 戻り値は 2025-12-31 です。
    SELECT LAST_DAY(DATETIME '2025-03-27 11:40:00','YEAR');
    
    -- 戻り値は 2025-03-31 です。
    SELECT LAST_DAY(DATETIME '2025-03-27 11:40:00','QUARTER');
  • 例 4:`week` と `isoweek` の結果を比較する。

    SELECT LAST_DAY('2025-06-27 11:40:00','week(sunday)') AS ld_week_sunday,
           LAST_DAY('2025-06-27 11:40:00','isoweek') AS ld_isoweek,
           LAST_DAY('2025-06-27 11:40:00','week') AS ld_week,
           LAST_DAY('2025-06-27 11:40:00','week(monday)') AS ld_week_monday;
           
    -- 次の結果が返されます。
    +----------------+------------+------------+----------------+
    | ld_week_sunday | ld_isoweek | ld_week    | ld_week_monday | 
    +----------------+------------+------------+----------------+
    | 2025-06-28     | 2025-06-29 | 2025-06-29 | 2025-06-29     | 
    +----------------+------------+------------+----------------+

関連関数

`LAST_DAY` は日付関数です。 日付の計算と変換に関する関数の詳細については、「日付関数」をご参照ください。