이번 글에서는 날짜 차이를 계산하는 함수들을 모두 알아보려고 합니다.
알아볼 함수는 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
'DataBase > MYSQL' 카테고리의 다른 글
[MYSQL] DATA TYPE (Version 8.0) (0) | 2021.07.09 |
---|---|
[MYSQL] DATE_FORMAT 함수 - 날짜 포맷/ 형식 지정하기 (0) | 2021.07.09 |
[MYSQL] CHAR_LENGTH 함수 - 문자열 길이 (2) | 2021.05.31 |
[MYSQL] LIKE 함수 - 특정 문자 검색하기 (1) | 2021.05.26 |
[MYSQL] MID/ SUBSTRING/ SUBSTR 함수 - 문자열 일부 가져오기 (0) | 2021.05.25 |
댓글