본문 바로가기
DB

[MySQL] 날짜 함수 (DATE_FORMAT, ADDDATE 등 )

by person456 2024. 4. 16.

 

 

1. DATE_FORMAT(date, "변경 포맷")

포맷 설명
%Y 연도를 완전한 4자리로 반환 ('2022' 등)
%y 연도를 2자리로 반환('2022' -> '22')
%M 월을 완전한 문자열로 표현 ('Apirl', 'July' 등)
%m 월을 숫자로 표현 (1~12)
%D 날짜 뒤에 영어 사수를 붙임 ('0th', '1st', '2nd') 
%d 날짜를 숫자로 표현( 0~ 31 )
%W 요일을 완전한 문자열로 표현 ('Sunday', 'Monday' 등)
%w 요일을 숫자로 표현( 0(일요일) ~ 6 )
%H 시간을 완전한 24시간으로 표현 ( 00 ~ 23)
%h 시간을 12시간으로 표현 ( 01 ~ 12 )
%i 분을 숫자로 표현 ( 0 ~ 59 )
%s 초를 숫자로 표현 ( 0 ~ 59 )

 

예시 ( MySQL sakila 데이터베이스의 payment 테이블 )

 

1) 날짜를 'YY.MM.DD' 형식으로 표현

SELECT payment_id, DATE_FORMAT(last_update, '%y.%m.%d')
FROM payment;

2) 날짜를 'YYYY.MM.DD h:i:s'로 표기 (12시간)

SELECT payment_id, DATE_FORMAT(last_update, '%y.%m.%d %h:%i:%s')
FROM payment;

 

 

** 날짜 반환 함수

  • NOW(), CURRENT_TIMESTAMP() - 현재 날짜와 시간을 반환
  • CURDATE(), CURRENT_DATE() - 현재 날짜를 반환
  • CURTIME(), CURRENT_TIME() - 현재 시각 반환
SELECT 
NOW(), CURRENT_TIMESTAMP() # 현재 날짜와 시각을 반환
CURDATE(), CURRENT_DATE() # 현재 날짜를 반환
CURTIME(), CURRENT_TIME() # 현재 시각을 반환
FROM dual;

 

 

** 날짜 계산 함수

  • ADDDATE(date, INTERVAL [값] [단위]
  • ADDTIME(date, addtime) - 해당 date에 해당 시간을 더한 값을 반환 ( 두번째 인자의 단위는 무조건 "HH:MM:SS" )
  • SUBDATE(date, INTERVAL [값] [단위]
  • SUBTIME(date, subtime) - 해당 date에 해당 시간을 뺀 값을 반환 
SELECT 
ADDDATE(NOW(), INTERVAL 10 DAY), # 10일 뒤
ADDDATE(NOW(), INTERVAL 10 MONTH), # 10개월 뒤
ADDDATE(NOW(), INTERVAL 10 YEAR), # 10년 뒤
ADDDATE(NOW(), INTERVAL 10 HOUR), # 10시간 뒤
ADDDATE(NOW(), INTERVAL 10 MINUTE), # 10분 뒤
ADDDATE(NOW(), INTERVAL 10 SECOND), # 10초 뒤
ADDDATE(NOW(), INTERVAL '10 20' DAY_HOUR) # 10일 20시간 뒤
FROM dual;
더보기

ADDDATE 함수 뒤 [단위]에 들어올 수 있는 단위 모음

1. MICROSECOND

2. SECOND

3. MINUTE

4. HOUR

5. DAY

6. WEEK

7. MONTH

8. QUATER

9. YEAR

10. SECOND_MICROSECOND

11. MINUTE_MICROSECOND

12. MINUTE_SECOND

13. HOUR_MINUTE

14. HOUR_SECOND

15. HOUR_MICROSECOND

16. DAY_HOUR

17. DAY_MINUTE

18. DAY_SECOND

19. DAY_MICROSECOND

20. YEAR_MONTH