날짜 함수 - 날짜/시간 데이터에서 원하는 값을 추출하거나, 변환해주는 함수
- 왜 사용하는 가?
- DATE, TIME, DATETIME, TIMESTAMP 등의 데이터형을 다루고, 이를 처리하기 위해 사용
- 날짜 함수의 종류
함수 | 설명 |
NOW( ) | 현재 날짜와 시간 반환 (DATETIME) |
CURDATE( ) | 현재 날짜 반환 (DATE) |
CURTIME( ) | 현재 시간 반환 (TIME) |
DATE( ) | DATETIME에서 날짜만 추출 |
TIME( ) | DATETIME에서 시간만 추출 |
YEAR( ) / MONTH( ) / DAY( ) | 날짜에서 연도 / 월 / 일 추출 |
HOUR( ) / MINUTE( ) / SECOND( ) | 시간에서 시, 분, 초 추출 |
DATEDIFF( ) | 두 날짜 간 차이 (일 단위) |
TIMESTAMPDIFF( ) | 두 날짜 간 차이 (단위 지정) |
ADDDATE( ) / DATE_ADD( ) | 날짜에 일 / 월 / 년 추가 |
SUBDATE( ) / DATE_SUB( ) | 날짜에서 일 / 월 / 년 빼기 |
LAST_DAY( ) | 해당 월의 마지막 날짜 |
WEEKDAY( ) | 요일 반환 (0 = 월요일, 6 = 일요일) |
STR_TO_DATE( ) | 문자열 → 날짜로 변환 |
DATE_FORMAT( ) | 날짜 → 문자열 형식 변환 |
- 예시
각 날짜 함수별 예시를 통해 더 자세하게 확인해 보자.
1. NOW( ) - 현재 날짜와 시간
SELECT NOW() AS current_datetime
출력 결과 :
current_datetime |
2025-08-04 12:15:00 |
2. CURDATE( ) - 현재 날짜 반환
SELECT CURDATE() AS current_date
출력 결과 :
current_date |
2025-08-04 |
3. CURTIME( ) - 현재 시간 반환
SELECT CURTIME() AS current_time
출력 결과 :
current_time |
12:15:00 |
4. DATE( ) - DATETIME에서 날짜만 추출
SELECT DATE('2025-08-04 12:15:00') AS only_date
출력 결과 :
only_date |
2025-08-04 |
5. TIME( ) - DATETIME에서 시간만 추출
SELECT TIME('2025-08-04 12:15:00') AS only_time
출력 결과 :
only_time |
12:15:00 |
6. YEAR( ) / MONTH( ) / DAY( ) - 연 / 월 / 일 추출
SELECT
YEAR('2025-08-04') AS year_val,
MONTH('2025-08-04') AS month_val,
DAY('2025-08-04') AS day_val;
출력 결과 :
year_val | month_val | day_val |
2025 | 8 | 4 |
7. HOUR( ) / MINUTE( ) / SECOND( ) - 시 / 분 / 초 추출
SELECT
HOUR('12:15:30') AS hour_val,
MINUTE('12:15:30') AS minute_val,
SECOND('12:15:30') AS second_val;
출력 결과 :
hour_val | minute_val | second_val |
12 | 15 | 30 |
8. DATEDIFF( ) - 두 날짜 간 일수 차이
SELECT DATEDIFF('2025-08-10', '2025-08-04') AS days_diff
출력 결과 :
days_diff |
6 |
9. TIMESTAMPDIFF( ) - 단위 지정 날짜 차이
SELECT
TIMESTAMPDIFF(DAY, '2025-08-04', '2025-08-10') AS day_diff,
TIMESTAMPDIFF(MONTH, '2024-06-01', '2025-08-01') AS month_diff;
출력 결과 :
day_diff | month_diff |
6 | 14 |
10. DATE_ADD( ) - 날짜에 일 / 월 / 년 더하기
SELECT
DATE_ADD('2025-08-04', INTERVAL 7 DAY) AS add_7_days,
DATE_ADD('2025-08-04', INTERVAL 2 MONTH) AS add_2_months
출력 결과 :
add_7_days | add_2_months |
2025-08-11 | 2025-10-04 |
- SQL에서 "INTERVAL" 은 날짜 계산 시 얼마만큼의 시간을 더하거나 뺄지를 지정하는 키워드다.
11. DATE_SUB( ) - 날짜에서 일 / 월 / 년 빼기
SELECT
DATE_SUB('2025-08-04', INTERVAL 7 DAY) AS sub_7_days,
DATE_SUB('2025-08-04', INTERVAL 1 YEAR) AS sub_1_year
출력 결과 :
sub_7_days | sub_1_year |
2025-07-28 | 2024-08-04 |
12. LAST_DAY( ) - 해당 월의 마지막 날짜 반환
SELECT LAST_DAY('2025-08-04') AS last_day_of_month
출력 결과 :
last_day_of_month |
2025-08-31 |
13. WEEKDAY( ) - 요일 인덱스 반환 (0 = 월요일)
SELECT WEEKDAY('2025-08-04') AS weekday_idx
출력 결과 :
weekday_idx |
0 |
14. STR_TO_DATE( ) - 문자열을 날짜로 변환
SELECT STR_TO_DATE('04-08-2025', '%d-%m-%Y) AS converted_date
출력 결과 :
converted_date |
2025-08-04 |
15. DATE_FORMAT( ) - 날짜를 형식화된 문자열로 변환
SELECT DATE_FORMAT('2025-08-04', '%Y년 %m월 %d일') AS formatted_date
출력 결과 :
formatted_date |
2025년 08월 04일 |
'SQL' 카테고리의 다른 글
실전 문제 풀이 (1) (3) | 2025.08.09 |
---|---|
조건 처리 함수 - MySQL (0) | 2025.08.07 |
Common Table Expression (CTE) - MySQL (4) | 2025.08.03 |
ROWS & RANGE (feat. Window Function) - MySQL (5) | 2025.08.01 |
Window Function (윈도우 함수) - MySQL (1) | 2025.07.29 |