본문 바로가기
MySQL

MySQL date add, diff, 시간 계산 (더하기, 빼기) 정리

by parkjp 2023. 8. 18.

 

MySQL 시간 관련 함수들

 쿼리를 짜다 보면 종종 특정 시간 기준으로 더하거나 빼거나 포맷팅을 하거나 하는데 MySQL에서 여러 함수들을 제공합니다. MySQL에서 자주 쓰는 시간 관련 함수들을 알아보도록 합시다.

 

  • DATE_ADD
  • DATE_SUB
  • DATEDIFF
  • TIMESTAMPDIFF
  • DATE_FORMAT

 

DATE_ADD

DATE_ADD(기준 날짜, INTERVAL)

// SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, YEAR 제공

EX) SELECT DATE_ADD('2023-08-18 00:00:00', INTERVAL 1 MINUTE);

// OUTPUT: 2023-08-18 00:01:00

 

DATE_SUB

DATE_SUB(기준 날짜, INTERVAL)

// SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, YEAR 제공

EX) SELECT DATE_SUB('2023-08-18 00:00:00', INTERVAL 1 MINUTE);

// OUTPUT: 2023-08-17 23:59:00

 

DATEDIFF

DATEDIFF(날짜1, 날짜2)

// 두 날짜 사이 일 수를 구합니다.
// 날짜1 - 날짜2

EX) SELECT DATEDIFF('2023-08-18 00:00:00', '2023-08-17 00:00:00');

// OUTPUT: 1

// 여기서 중요한 건 24시간 기준이 아니라 날짜 기준이라는 겁니다.

EX) SELECT DATEDIFF('2023-08-18 00:00:00', '2023-08-17 18:00:00');

// OUTPUT: 1

EX) SELECT DATEDIFF('2023-08-19 00:00:00', '2023-08-17 18:00:00');

// OUTPUT: 2

 

TIMESTAMPDIFF

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

// 단위 SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, YEAR 제공
// 두 날짜 사이 기간을 단위 값으로 계산하여 줍니다.
// 이건 DATEDIFF와 다르게 날짜2가 더 미래가 되어야 합니다.
// 날짜1 값이 미래라면 마이너스 값으로 나옵니다.

EX) SELECT TIMESTAMPDIFF(MINUTE, '2023-08-17 00:00:00', '2023-08-18 00:00:00');

// OUTPUT : 1440

EX) SELECT TIMESTAMPDIFF(SECOND, '2023-08-17 00:00:00', '2023-08-18 00:00:00');

// OUTPUT : 86400

 

DATE_FORMAT

DATE_FORMAT(날짜, 포맷형식)


EX) SELECT DATE_FORMAT('2023-08-18 00:00:00', '%Y%m%d');

// OUTPUT : 20230818

EX) SELECT DATE_FORMAT(now(), '%Y-%m-%d %H:%i:%s');

// OUTPUT : 2023-08-18 02:20:31

 

FORMAT 형식 정리

참조 : https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html#function_date-format
Specifier Description
%Y 4자리 연도
%y 2자리 연도
%M 영문 월 (풀 네이밍) ex) August
%b 영문 월 ex) Aug
%m 숫자 월
%c 숫자 월 (한자리로 표현) ex) 07 -> 7
%d 일자
%e 일자 (한자리로 표현) ex) 05 -> 5
%I or %h 시간 (12시간제)
%H 시간 (24시간제)
%i
%r hh:mm:ss AM,PM (12시간제)
%T hh:mm:ss (24시간제)
%S  or %s
%p AM or PM
%f 마이크로 초

 

반응형