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

MaxCompute:WEEKOFYEAR

最終更新日:Nov 19, 2025

WEEKOFYEAR 関数は、指定された date の年の週を返します。date_part パラメーターを使用して、週の最初の日を指定できます。

構文

BIGINT|INT WEEKOFYEAR (STRING|DATETIME|DATE|TIMESTAMP|TIMESATMP_NTZ <date> [, STRING <date_part>])

パラメーター

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

    入力が STRING の場合、フォーマットは yyyy-mm-dd hh:mi:ss です。Hive 互換のデータ型エディションでは、フォーマットは yyyy-mm-dd で、date_part パラメーターはサポートされていません

  • date_part: オプション。STRING 値。有効な値は、isoweekweek、または week(weekday) です。

    時間単位

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

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

      有効な値: SUNDAY、MONDAY、TUESDAY、WEDNESDAY、THURSDAY、FRIDAY、および SATURDAY。

    ISO 週

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

    date_part パラメーターを指定しない場合、次のルールが適用されます:

    • デフォルトでは、週は月曜日に始まります。

    • 1 月 1 日を含む週は、その週のほとんどの日 (4 日以上) を含む年に割り当てられます。

戻り値

次のルールに基づいて BIGINT または INT 値を返します。

  • 入力日付が DATETIME の場合、BIGINT 値が返されます。

  • 入力日付が STRING の場合、Hive 互換のデータ型エディションでは INT 値が返されます。それ以外の場合は、BIGINT 値が返されます。

  • 入力日付が DATE、TIMESTAMP、または TIMESTAMP_NTZ の場合、INT 値が返されます。

  • 入力日付が STRING、DATETIME、DATE、TIMESTAMP、または TIMESTAMP_NTZ 以外の型の場合、エラーが返されます。

  • STRING の日付値のフォーマットが無効な場合、NULL が返されます。

  • 入力日付が NULL の場合、関数は NULL を返します。

  • 例 1: 年の初めまたは終わりの日付の週番号を決定します。

    年の初めまたは終わりの日付に対して date_part パラメーターを指定しない場合、週はその日のほとんどを含む年に割り当てられます。

    -- 戻り値は 52 です。
    SELECT WEEKOFYEAR(TO_DATE('20241229', 'YYYYMMDD'));
    
    -- 2025-12-29 の週は 2025-12-29 (月曜日) に始まり、2026-01-04 に終わります。ほとんどの日 (4 日) は 2026 年にあります。したがって、この週は 2026 年の最初の週と見なされます。
    -- 戻り値は 1 です。
    SELECT WEEKOFYEAR(TO_DATE('20251229', 'YYYYMMDD'));
    
    -- 2026-01-01 は新年にあり、その週のほとんどの日は 2026 年にあります。したがって、この週は 2026 年の最初の週と見なされます。
    -- 戻り値は 1 です。
    SELECT WEEKOFYEAR(TO_DATE('20260101', 'YYYYMMDD'));
    
  • 例 2: 異なるルールを使用して週の最初の日を指定します。

    date_part パラメーターを使用して、週の最初の日を指定します。これは週番号に影響します。

    -- DATE データ型は MaxCompute 1.0 ではサポートされていません。DATE 型のパラメーターを渡すには、MaxCompute 2.0 のデータ型を有効にする必要があります。
    SET odps.sql.type.system.odps2=true;
    -- デフォルトでは、週は月曜日に始まり、最初の週にはその年の少なくとも 4 日間が含まれている必要があります。
    -- 戻り値は 14 です。
    SELECT WEEKOFYEAR(DATE '2025-03-31');
    
    -- 週の始まりを明示的に月曜日に設定します。
    -- 戻り値は 13 です。
    SELECT WEEKOFYEAR(DATE '2025-03-31','week(monday)');
    
    -- 週の始まりを日曜日に設定します。
    -- 戻り値は 13 です。
    SELECT WEEKOFYEAR(DATETIME '2025-03-31 10:32:00','week(sunday)');
    
    -- 週の始まりを金曜日に設定します。
    -- 戻り値は 13 です。
    SELECT WEEKOFYEAR(TIMESTAMP_NTZ '2025-03-31 10:32:00.123','week(friday)');
  • 例 3: ISO 標準に基づいて週番号を計算します。

    isoweek を使用して ISO 8601 標準に従います。この標準では、週は月曜日に始まり、最初の週にはその年の少なくとも 4 日間が含まれている必要があります。

    -- DATE データ型は MaxCompute 1.0 ではサポートされていません。DATE 型のパラメーターを渡すには、MaxCompute 2.0 のデータ型を有効にする必要があります。
    SET odps.sql.type.system.odps2=true;
    -- ISO 週標準によれば、2025-01-06 は第 2 週です。
    -- 戻り値は 2 です。
    SELECT WEEKOFYEAR(DATE '2025-01-06','isoweek');
  • 例 4: 入力にさまざまな日付と時刻のデータ型を使用します。

    -- 入力は DATETIME 型です。
    -- 戻り値は 1 です。
    SELECT WEEKOFYEAR(DATETIME '2025-01-05 10:32:00');
    
    -- 戻り値は 0 です。
    SELECT WEEKOFYEAR(DATETIME '2025-01-05 10:32:00','week(monday)');
    
    -- 入力は標準の日付フォーマットの文字列です。
    -- 戻り値は 27 です。
    SELECT WEEKOFYEAR('2025-07-01 12:30:15');
    
    -- TIMESTAMP データ型は MaxCompute 1.0 ではサポートされていません。TIMESTAMP 型のパラメーターを渡すには、MaxCompute 2.0 のデータ型を有効にする必要があります。
    SET odps.sql.type.system.odps2=true;
    -- 入力は TIMESTAMP 型です。
    -- 戻り値は 30 です。
    SELECT WEEKOFYEAR(TIMESTAMP '2025-07-21 00:30:15.123');
  • 例 5: 異常な入力と境界入力を処理します。

    -- 文字列のフォーマットが yyyy-mm-dd hh:mi:ss と一致せず、解析できません。
    -- 戻り値は NULL です。
    SELECT WEEKOFYEAR('20141231');
    
    -- 戻り値は NULL です。
    SELECT WEEKOFYEAR(NULL);

関連関数

WEEKOFYEAR は日付関数です。日付関数の詳細については、「日付関数」をご参照ください。