MySQL 날짜 및 시간 계산 함수 정리
DATE_ADD, DATE_SUB, DATEDIFF, TIMEDIFF, PERIOD_DIFF, TIMESTAMPDIFF, DATE_FORMAT
1. DATE_ADD – 날짜 또는 시간 더하기
목적
지정한 날짜에 일정 시간 간격을 더할 때 사용
문법
DATE_ADD(date, INTERVAL n UNIT)
예시
SELECT DATE_ADD('2024-01-01', INTERVAL 7 DAY); -- '2024-01-08'
SELECT DATE_ADD(NOW(), INTERVAL 1 HOUR); -- 현재 시간 + 1시간
SELECT DATE_ADD(NOW(), INTERVAL -1 MONTH); -- 현재 시간 -1개월
특징
- INTERVAL 단위: SECOND, MINUTE, HOUR, DAY, MONTH, YEAR 등 다양하게 사용 가능
- 날짜 계산 시 가장 많이 사용되는 함수 중 하나
2. DATE_SUB – 날짜 또는 시간 빼기
목적
지정한 날짜에서 일정 시간 간격을 뺄 때 사용
문법
DATE_SUB(date, INTERVAL n UNIT)
예시
SELECT DATE_SUB('2024-01-01', INTERVAL 1 WEEK); -- '2023-12-25'
SELECT DATE_SUB(NOW(), INTERVAL 30 MINUTE); -- 현재 시간 - 30분
3. DATEDIFF – 두 날짜 간의 일수 차이 계산
목적
두 날짜 사이의 일수 차이를 정수로 계산
문법
DATEDIFF(end_date, start_date)
예시
SELECT DATEDIFF('2024-12-31', '2024-01-01'); -- 365
SELECT DATEDIFF('2024-01-01', '2024-01-01'); -- 0
특징
- 시간은 무시되고 날짜만 비교됨
- 결과는 정수
- 양 끝을 포함하지 않음
- 날짜 형식이 잘못되면 NULL 반환
4. TIMEDIFF – 두 시간 간의 차이 계산
목적
두 시간(또는 날짜+시간) 사이의 차이를 HH:MM:SS
형식으로 계산
문법
TIMEDIFF(datetime1, datetime2)
예시
SELECT TIMEDIFF('2024-01-03 14:00:00', '2024-01-01 12:00:00'); -- '50:00:00'
SELECT TIMEDIFF('12:00:00', '08:30:00'); -- '03:30:00'
특징
- 결과는 문자열 (
HH:MM:SS
) - 단위가 시/분/초이기 때문에 정밀한 시간 계산에 적합
5. PERIOD_DIFF – 두 연월(YYYYMM) 사이의 개월 수 차이
목적
두 연월 간의 차이를 개월 수 기준으로 계산
문법
PERIOD_DIFF(P1, P2)
-- P1, P2는 YYYYMM 또는 YYMM 형식
예시
SELECT PERIOD_DIFF(202202, 202112); -- 2
SELECT PERIOD_DIFF(202212, 201912); -- 24
SELECT PERIOD_DIFF(2202, 1912); -- 26
특징
- 반환값은 정수
- 일수는 고려하지 않고 오직 연/월만 계산됨
- YYYYMM 형식의 숫자 값 이어야 함
6. TIMESTAMPDIFF – 다양한 단위로 시간 간격 계산
목적
단위(YEAR, MONTH, DAY, HOUR 등)를 지정해 두 시간 사이의 간격을 정수로 계산
문법
TIMESTAMPDIFF(unit, datetime1, datetime2)
예시
SELECT TIMESTAMPDIFF(YEAR, '2010-01-01', '2024-01-01'); -- 14
SELECT TIMESTAMPDIFF(MONTH, '2022-02-01', '2023-03-01'); -- 13
SELECT TIMESTAMPDIFF(DAY, '2024-05-01', '2024-05-19'); -- 18
SELECT TIMESTAMPDIFF(HOUR, '2024-01-01 00:00:00', '2024-01-02 12:00:00'); -- 36
특징
- 반환값은 정수
- 다양한 단위 지원: SECOND, MINUTE, HOUR, DAY, MONTH, YEAR
- 범용적으로 가장 강력한 날짜 차이 계산 함수
7. DATE_FORMAT – 날짜를 문자열로 포맷팅
목적
날짜를 특정 형식의 문자열로 변환
문법
DATE_FORMAT(date, 'format')
주요 포맷 코드
코드 | 설명 | 예시 |
%Y | 4자리 연도 | 2024 |
%y | 2자리 연도 | 24 |
%m | 2자리 월 | 05 |
%d | 2자리 일 | 19 |
%H | 24시간제 시 | 14 |
%i | 분 | 30 |
%s | 초 | 00 |
예시
SELECT DATE_FORMAT(NOW(), '%Y-%m-%d'); -- '2024-05-19'
SELECT DATE_FORMAT(NOW(), '%Y/%m/%d %H:%i:%s'); -- '2024/05/19 14:30:00'
특징
- 반환값은 문자열
- 날짜 출력용으로 주로 사용됨
- 프론트엔드 혹은 레포트 화면에 표시할 날짜 형식 커스터마이징에 유용
'DB > MySQL' 카테고리의 다른 글
[MySQL] SQL 숫자 처리 함수 완벽 정리 (0) | 2025.05.19 |
---|---|
[MySQL][MAC] brew services start mysql와 mysql.server start 차이 (0) | 2024.03.03 |
[MySQL][MAC] MAC에서 MySQL 설치 방법 (0) | 2024.03.03 |
[DB] 데이터베이스 관련 개념 - 01 (0) | 2022.09.05 |