mysql: MAKEDATE

최준병·2026년 4월 1일

MAKEDATE()함수 완전 정리


기본 문법

MAKEDATE(year, dayofyear) : date타입 반환
매개변수설명
year연도 (숫자)
dayofyear해당 연도의 몇 번째 날인지 (1 = 1월 1일)

핵심 개념: dayofyear

두 번째 인자가 월/일이 아니라 "연중 몇 번째 날" 이라는 점이 포인트예요.

MAKEDATE(2025, 1)    -- 2025-01-01  (1월 1일 = 연중 1번째 날)
MAKEDATE(2025, 31)   -- 2025-01-31  (1월 31일 = 연중 31번째 날)
MAKEDATE(2025, 32)   -- 2025-02-01  (2월 1일 = 연중 32번째 날)
MAKEDATE(2025, 365)  -- 2025-12-31
MAKEDATE(2024, 366)  -- 2024-12-31  (2024년은 윤년이라 366일)

특이 동작: 365 초과값

dayofyear가 365를 넘으면 다음 연도로 넘어가요.

MAKEDATE(2025, 366)  -- 2026-01-01  (2025년은 윤년 아님)
MAKEDATE(2025, 400)  -- 2026-02-04

NULL 반환 케이스

MAKEDATE(2025, 0)    -- NULL (0번째 날은 없음)
MAKEDATE(0, 1)       -- NULL (연도 0은 허용 안 함)
MAKEDATE(NULL, 1)    -- NULL
MAKEDATE(2025, NULL) -- NULL

실전 활용 예시

-- 해당 연도의 첫째날
MAKEDATE(YEAR(NOW()), 1)          -- 2025-01-01

-- 특정 날짜가 속한 연도의 첫째날
MAKEDATE(YEAR('2025-11-03'), 1)   -- 2025-01-01

-- DAYOFYEAR()와 조합 (날짜 → 연중 일수 → 다시 날짜)
MAKEDATE(2025, DAYOFYEAR('2025-03-15'))  -- 2025-03-15

DAYOFYEAR()와 세트로 기억하기

MAKEDATE()의 반대 함수가 DAYOFYEAR()예요.

DAYOFYEAR('2025-03-15')  -- 74  (3월 15일은 연중 74번째 날)
MAKEDATE(2025, 74)       -- 2025-03-15

주의사항 요약

  • 두 번째 인자는 월/일이 아닌 연중 일수
  • 0 입력 시 NULL 반환
  • 365 초과 시 다음 해로 넘어감
  • 반환 타입은 항상 DATE
profile
나의 기록

0개의 댓글