본문 바로가기
SQL

날짜 함수 - MySQL

by 바른곰의 SQL천국 2025. 8. 5.

날짜 함수 - 날짜/시간 데이터에서 원하는 값을 추출하거나, 변환해주는 함수

 

- 왜 사용하는 가?

  • 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