본문 바로가기
DataBase/MYSQL

[MYSQL] TIMEDIFF/ DATEDIFF /TIMESTAMPDIFF 함수 - 날짜 차이 계산

by 오늘은강박사갈거야~~ 2021. 7. 9.
반응형

이번 글에서는 날짜 차이를 계산하는 함수들을 모두 알아보려고 합니다.

알아볼 함수는 TIMEDIFF, DATEDIFF, TIMESTAMPDIFF입니다. 

 

 

<1> TIMEDIFF 함수

 

DATEDIFF 함수는 문자 그대로 두 날짜 간의 차이를 DATE(일)로 가지고 오는 역할을 합니다.

 

사용법은 아래와 같이 간단합니다. 사용자가 원하는 두 날짜를 인수로 넣어주면 되겠습니다.

TIMEDIFF(시간1, 시간2)

 

내부의 계산은 시간 1 - 시간 2로 진행되므로, 순서에 유의해 주시면 되겠습니다.

참고로 시간 1보다 시간 2가 더 나중 시간이면, -가 붙은 상태로 출력됩니다. 

 

[1] 사용 형태

 

SELECT TIMEDIFF("1991-07-29 14:00:00" , "1991-07-29 00:00:00");

 

SELECT TIMEDIFF("14:00:00" , "00:00:00");

 

결과는 모두 아래와 같이 동일하게 14:00:00 이 나오게 됩니다. 14:00:00은  '시간'을 의미합니다.

 

 

<2> DATEDIFF 함수

 

DATEDIFF 함수는 문자 그대로 두 날짜 간의 차이를 DATE(일)로 가지고 오는 역할을 합니다.

사용법은 아래와 같이 간단합니다. 사용자가 원하는 두 날짜를 인수로 넣어주면 되겠습니다.

 

DATEDIFF(날짜1, 날짜2)

 

내부의 계산은 날짜 1 - 날짜 2로 진행되므로, 순서에 유의해 주시면 되겠습니다.

참고로 날짜 1보다 날짜 2가 더 나중 시간이면, -가 붙은 상태로 출력됩니다. 

 

[1] 사용 형태

 

SELECT DATEDIFF("2021-07-09 00:00:00", "1991-07-29 14:00:00");

 

SELECT DATEDIFF("2021-07-09", "1991-07-29");

 

결과는 모두 아래와 같이 동일하게 10938 이 나오게 됩니다. 10938을 '일'을 의미합니다.

 

 

 

<3> TIMESTAMPDIFF 함수

 

위의 함수들을 보시면,  시간, 일 에 대한 함수가 각각 존재합니다. 사용법도 모두 동일하면서 말이죠.

지금 말씀드릴 TIMESTAMPDIFF 함수는 모든 시간 관련 차이를 계산하는 함수입니다.

 

사용법은 다음과 같습니다. 

 

TIMESTAMPDIFF('결과값 형식','날짜1','날짜2')

 

- 내부의 계산은 위의 함수들과 반대로, 날짜 2 - 날짜 1로 진행됩니다.

 

- 결괏값 형식이란, 말 그대로 사용자가 원하는 단위를 입력해 주면 되겠습니다. 아래와 같습니다.

 

 

SECOND WEEK
MINUTE MONTH
HOUR QUARTER 분기
DAY YEAR 년도

 

 

아래의 사용 예시를 보고 이해를 해봅시다.

 

[1] 사용 형태

 

7시간의 차이가 나는 시간을 예시로 들어보겠습니다.

7시간은 초로 환산하면 25200초이고, 분으로 환산하면 420분입니다. 

 

1. 두 날짜 간의 차이를 '초'로 표현

 

SELECT TIMESTAMPDIFF(SECOND,"2021-07-29 14:00:00" , "2021-07-29 21:00:00");

 

결과는 25200(초)

 

2. 두 날짜 간의 차이를 '분'으로 표현

 

SELECT TIMESTAMPDIFF(MINUTE,"2021-07-29 14:00:00" , "2021-07-29 21:00:00");

 

결과는 420(분)

 

3. 두 날짜 간의 차이를 '일'으로 표현

 

SELECT TIMESTAMPDIFF(DAY,"2021-07-29 14:00:00" , "2021-07-29 21:00:00");

 

결과는 0(일)

 

 

 

 

[2] 참고 사항

저는 일반적으로 작업을 수행할 때 위와 같은 방식으로 바로 처리하지 않습니다. 잘 정제되어 있는 데이터면 상관없겠지만, 그렇지 않은 경우의 수가 항상 존재하기 때문에, 아래와 같이 처리합니다. 걱정이 너무 많은 것일 수도..

참고만 바라겠습니다.

 

SELECT DATEDIFF(DATE_FORMAT("2021-07-09","%Y-%m-%d"), DATE_FORMAT("1991-07-29","%Y-%m-%d"));

 

DATE_FORMAT에 대한 설명은 아래 링크 참조

 

https://bramhyun.tistory.com/28

 

7. [MYSQL] DATE_FORMAT 함수 - 날짜 포맷/ 형식 지정하기

DATE_FORMAT 함수 SQL을 작성하다보면, 시간과 날짜에 관련된 COLUMN들을 활용하는 경우가 종종 있습니다. 이번 글에서는 DATETIME 에 관련된 포맷과 DATE_FORMAT 함수에 관련하여 정리 해 보겠습니다. 이

bramhyun.tistory.com

 

 

반응형

댓글