본문으로 건너뛰기
최종 수정: 에

YEARWEEK

설명​

YEARWEEK 함수는 지정된 날짜의 "연도 + 주 번호" 조합을 반환하는 데 사용됩니다(형식: YYYYWW, 예: 202301은 2023년 1주 차를 나타냅니다). 선택적 매개변수 mode를 통해 주의 시작 요일과 "첫째 주"를 결정하는 기준을 유연하게 설정할 수 있으며, 기본값은 mode=0입니다.

주 번호의 범위는 모드 설정에 따라 1-53입니다.

매개변수 mode에 따른 동작은 아래 테이블과 같습니다.

모드주의 시작 요일주 번호 범위첫째 주의 정의
0일요일1-53해당 연도의 첫 번째 일요일이 포함된 주
1월요일1-53해당 연도에 속하는 날이 4일 이상인 첫 번째 주
2일요일1-53해당 연도의 첫 번째 일요일이 포함된 주
3월요일1-53해당 연도에 속하는 날이 4일 이상인 첫 번째 주
4일요일1-53해당 연도에 속하는 날이 4일 이상인 첫 번째 주
5월요일1-53해당 연도의 첫 번째 월요일이 포함된 주
6일요일1-53해당 연도에 속하는 날이 4일 이상인 첫 번째 주
7월요일1-53해당 연도의 첫 번째 월요일이 포함된 주

이 함수는 MySQL의 yearweek 함수와 동일하게 동작합니다.

구문​

YEARWEEK(`<date_or_time_expr>`[, mode])

반환 값​

YYYYWW 형식의 INT 정수를 반환합니다(앞 4자리는 연도, 뒤 2자리는 주 번호). 예를 들어 202305는 2023년 5주 차를, 202052는 2020년 52주 차를 나타냅니다.

  • 날짜가 속한 주가 이전 연도에 해당하면 이전 연도의 연도와 주 번호를 반환합니다(예: 2021년 첫 달 1일은 202052를 반환할 수 있습니다).
  • 날짜가 속한 주가 다음 연도에 해당하면 다음 연도의 연도와 주 번호 1을 반환합니다(예: 2024년 마지막 달 30일은 202501을 반환할 수 있습니다).
  • 입력이 NULL이면 NULL을 반환합니다.

예제​

-- Default mode=0 (Sunday start, first week contains first Sunday)
-- 2021-01-01 is Friday, the first Sunday of the week is 2020-12-27, so it belongs to week 52 of 2020
SELECT YEARWEEK('2021-01-01') AS yearweek_mode0;
+----------------+
| yearweek_mode0 |
+----------------+
| 202052 |
+----------------+

-- mode=1 (Monday start, 4-day rule, consistent with WEEKOFYEAR)
SELECT YEARWEEK('2020-07-01', 1) AS yearweek_mode1;
+----------------+
| yearweek_mode1 |
+----------------+
| 202027 |
+----------------+

-- mode=1, cross-year week (2024-12-30 is Monday, the week has ≥4 days in 2025, belongs to week 1 of 2025)
SELECT YEARWEEK('2024-12-30', 1) AS cross_year_mode1;
+------------------+
| cross_year_mode1 |
+------------------+
| 202501 |
+------------------+

-- mode=5 (Monday start, first week contains first Monday)
-- 2023-01-02 is Monday (first Monday of the year), the week is week 1 of 2023
SELECT YEARWEEK('2023-01-02', 5) AS yearweek_mode5;
+----------------+
| yearweek_mode5 |
+----------------+
| 202301 |
+----------------+

-- Input DATE type
SELECT YEARWEEK('2023-12-25', 1) AS date_type_mode1;
+------------------+
| date_type_mode1 |
+------------------+
| 202352 |
+------------------+

-- Input NULL (returns NULL)
SELECT YEARWEEK(NULL) AS null_input;
+------------+
| null_input |
+------------+
| NULL |
+------------+