[SQL] 두 날짜의 일수 차 구하기 - DATEDIFF
2024. 9. 24. 19:44ㆍLanguage/SQL
두 날짜의 일(day)수 차이를 구할 때 사용되는 'DATEDIFF' 함수에 대해 알아보자.
1. 기본 문법
SELECT DATEDIFF(날짜 데이터1, 날짜 데이터2) AS 별명
FROM 테이블명
DATEDIFF
첫 번째 날짜에서 두 번째 날짜를 뺄셈 연산하는 함수
- 결과적으로 '두 날짜의 뺄셈 연산' 을 하는 함수라 이해하면 편하다. 날짜 데이터의 경우 단일 값이 아닌 여러 값이 합쳐진 형태의 값이므로 일반적인 '-' 연산자를 통해 값을 얻기 어렵기 때문에 해당 함수를 통해 두 날짜의 차(일수)를 구하는 것이 좋다.
- 파라미터의 위치가 중요하다. 위치 때문에 에러가 발생하는 것은 아니지만 원하는 값과 정반대의 결과를 얻을 수 있어 주의가 필요하다. 첫 번째 파라미터에는 두 날짜를 비교해 '최근 날짜(큰 값)'를 두 번째 파라미터에는 '오래된 날짜(작은 값)' 을 전달해야 두 날짜의 일수 차를 얻을 수 있다. 만약 반대로 전달할 경우 절대값은 같으나 '음수(-)' 인 결과 값을 얻게 된다.
- '날짜의 뺄셈 연산' 이란 관점에서만 본다면 'DATE_SUB(SUBDATE)' 가 있는데 'DATEDIFF' 를 사용할까 싶지만 두 함수는 사용 조건이 다르다. 'DATEDIFF' 는 '두 날짜' 에 대한 정보를 알고 '차이 값' 을 구하고자 할 때 사용되며, 'DATE_SUB(SUBDATE)' 의 경우 '하나의 날짜' 정보와 '차이 값' 을 알고 '이전 날짜' 에 대한 정보를 얻고자 할 때 사용된다.
2. 사용 예제
꿀 같던 '추석(2024-09-17)' 을 보낸지 얼마나 지났는지 구하는 솔루션을 작성한다. 오늘은 '2024-09-24' 이다.
SELECT DATEDIFF('2024-09-24', '2024-09-17') since_chuseok,
DATEDIFF('2024-09-17', '2024-09-24') since_chuseok_2
벌써 꿀(?) 같던 추석을 보낸지 '7일' 이나 되었다. 무튼 'since_chuseok' 의 경우 위에 설명한 것과 같이 파라미터를 지정한 것이고, 'since_chuseok_2' 의 경우 파라미터를 반대로 전달한 경우이다. 결과를 보면 '7' 이 아닌 '-7' 이 반환된 것을 확인 할 수 있다.
또한 해당 함수를 활용할 때 주의할 것은 'DATEDIFF' 는 '-' 연산자와 비슷하게 '차' 를 구한다는 것이다. 그렇기에 '2024-09-17' 부터 '2024-09-24' 까지의 일수를 구하고 싶다면 'DATEDIFF() + 1' 을 해주어야 '8일' 이란 결과를 얻을 수 있다. 예시는 '보낸지' 란 지문이 있기에 '2024-09-17' 은 제외했지만 만약 두 날짜를 포함하는 기간을 요구 또는 필요로 할 때는 꼭 '+1' 을 하도록 하자!
참고 문서
'Language > SQL' 카테고리의 다른 글
[SQL] 모든 조합 만들기 - CROSS JOIN (0) | 2024.10.17 |
---|---|
[SQL] 시간차 구하기 - TIMEDIFF (0) | 2024.09.24 |
[SQL] 이전 시간 구하기 - SUBTIME (0) | 2024.09.24 |
[SQL] 이후 시간 구하기 - ADDTIME (0) | 2024.09.24 |
[SQL] 이전 날짜 구하기 - DATE_SUB, SUBDATE (0) | 2024.09.24 |