[MySQL] 날짜 관련 함수

켈로그·2025년 6월 11일

SQL

목록 보기
10/20

날짜/시간을 다룰 때 자주 쓰는 MySQL 함수 정리

SQL에서 날짜(DATE, DATETIME, TIMESTAMP) 컬럼을 다룰 때는

  • 연도/월/일/시각을 추출하거나,
  • 계산, 포맷 변경, 비교 조건

등을 처리하는 함수들을 사용함


날짜 함수 반환 타입 정리

함수명기능 설명반환 타입예시 값
YEAR(date)연도 추출 (4자리)INT2023
MONTH(date)월 추출 (1~12)INT10
DAY(date)일(day) 추출 (1~31)INT5
DAYOFWEEK(date)요일 추출 (1 = 일요일 ~ 7 = 토요일)INT5
WEEKDAY(date)요일 추출 (0 = 월요일 ~ 6 = 일요일)INT3
HOUR(datetime)시(hour) 추출 (0~23)INT14
MINUTE(datetime)분(minute) 추출 (0~59)INT30
SECOND(datetime)초(second) 추출 (0~59)INT45
NOW()현재 날짜와 시간 반환DATETIME2024-06-10 15:30:22
CURDATE()현재 날짜 반환DATE2024-06-10
CURTIME()현재 시간 반환TIME15:30:22
DATEDIFF(d1, d2)두 날짜의 일 수 차이 계산 (d1 - d2)INT5
TIMESTAMPDIFF(...)날짜 차이를 특정 단위 기준으로 계산INT12, 365 등
DATE_ADD(...)날짜 더하기DATE or DATETIME2023-11-01 등
DATE_SUB(...)날짜 빼기DATE or DATETIME2023-09-21 등
DATE_FORMAT(...)날짜를 문자열로 포맷팅VARCHAR'2023-10-05', '2023년 10월 5일' 등

연도 추출: YEAR()

YEAR(날짜컬럼)

날짜에서 연도(4자리 정수)를 추출함
예: '2023-10-05' → 2023

SELECT YEAR('2023-10-05'); -- 결과: 2023

월 추출: MONTH()

MONTH(날짜컬럼)

날짜에서 월(1~12)을 추출함

SELECT MONTH('2023-10-05'); -- 결과: 10

일 추출: DAY()

DAY(날짜컬럼)

날짜에서 일(day)을 추출함

SELECT DAY('2023-10-05'); -- 결과: 5

요일 추출 (1=일요일~7=토요일): DAYOFWEEK()

DAYOFWEEK(날짜컬럼)

요일을 숫자로 반환함 (1 = 일요일, 7 = 토요일)

SELECT DAYOFWEEK('2023-10-05'); -- 결과: 5 (목요일)

요일 추출 (0=월요일~6=일요일): WEEKDAY()

WEEKDAY(날짜컬럼)

요일을 숫자로 반환함 (0 = 월요일, 6 = 일요일)

SELECT WEEKDAY('2023-10-05'); -- 결과: 3 (목요일)

날짜 포맷 변경: DATE_FORMAT()

DATE_FORMAT(날짜컬럼, '포맷')

날짜를 원하는 문자열 형식으로 포맷함

SELECT DATE_FORMAT('2023-10-05', '%Y-%m-%d');        -- '2023-10-05'
SELECT DATE_FORMAT(NOW(), '%Y년 %m월 %d일');         -- '2023년 10월 05일'
포맷의미
%Y연도 (4자리)
%y연도 (2자리)
%m월 (2자리)
%d일 (2자리)
%H시 (24시제)
%i분
%s초

현재 날짜 및 시간: NOW(), CURDATE(), CURTIME()

NOW()

현재 날짜와 시간을 반환함

SELECT NOW(); -- 예: 2023-10-05 15:30:22

CURDATE()

현재 날짜만 반환함

SELECT CURDATE(); -- 예: 2023-10-05

CURTIME()

현재 시간만 반환함

SELECT CURTIME(); -- 예: 15:30:22

날짜 차이 계산: DATEDIFF()

DATEDIFF(날짜1, 날짜2)

날짜 간의 일 수 차이를 정수로 반환함

SELECT DATEDIFF('2023-10-10', '2023-10-05'); -- 결과: 5

날짜 차이 (단위 지정): TIMESTAMPDIFF()

TIMESTAMPDIFF(단위, 날짜1, 날짜2)

날짜 간 차이를 지정한 단위 기준으로 반환함
단위: YEAR, MONTH, DAY, HOUR, MINUTE, SECOND

SELECT TIMESTAMPDIFF(DAY, '2023-10-01', '2023-10-05'); -- 4
SELECT TIMESTAMPDIFF(MONTH, '2022-01-01', '2023-01-01'); -- 12

날짜 더하기: DATE_ADD()

DATE_ADD(날짜, INTERVAL N 단위)

날짜에 지정한 기간을 더함

SELECT DATE_ADD('2023-10-01', INTERVAL 7 DAY); -- '2023-10-08'
SELECT DATE_ADD(NOW(), INTERVAL 1 MONTH);

날짜 빼기: DATE_SUB()

DATE_SUB(날짜, INTERVAL N 단위)

날짜에서 지정한 기간을 뺌

SELECT DATE_SUB('2023-10-01', INTERVAL 10 DAY); -- '2023-09-21'

조건문에서 활용 예시

YEAR(joined), MONTH(joined)

특정 연/월에 가입한 사용자 필터링 등 조건에 자주 활용됨

SELECT * FROM user_info
WHERE YEAR(joined) = 2023
  AND MONTH(joined) = 10;

profile
호랑이기운

0개의 댓글