SQL에서 DATEDIFF 함수는 두 날짜 사이의 차이를 계산하여 반환하는 함수이다. 주로 두 날짜 간의 일수 차이를 구할 때 사용된다.
구조
DATEDIFF(date1, date2)
설명:
- date1과 date2는 비교할 두 날짜이다
- DATEDIFF(date1, date2)는 date1과 date2 사이의 일수를 반환한다 반환 값은 date1이 date2보다 크면 양수, 작으면 음수이다.
예제:
SELECT DATEDIFF('2024-08-01', '2024-07-01') AS DaysDifference;
이 쿼리는 2024년 7월 1일과 2024년 8월 1일 사이의 일수 차이를 계산합니다. 결과는 31입니다.
DATEDIFF(datepart, startdate, enddate)
- datepart는 날짜 부분을 지정하는 문자열입니다 (예: 'day', 'month', 'year').
- startdate와 enddate는 비교할 두 날짜입니다.
- DATEDIFF(datepart, startdate, enddate)는 startdate와 enddate 사이의 datepart 단위로 차이를 반환합니다.
예제:
SELECT DATEDIFF(day, '2024-07-01', '2024-08-01') AS DaysDifference;
이 쿼리는 2024년 7월 1일과 2024년 8월 1일 사이의 일수 차이를 계산합니다. 결과는 31입니다.
코드로 보는 예
SELECT
HISTORY_ID,
CAR_ID,
DATE_FORMAT(START_DATE, '%Y-%m-%d') AS START_DATE,
DATE_FORMAT(END_DATE, '%Y-%m-%d') AS END_DATE,
CASE
WHEN DATEDIFF(END_DATE, START_DATE)+1 >= 30 THEN '장기 대여'
ELSE '단기 대여'
END AS RENT_TYPE
FROM
CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE
START_DATE LIKE '2022-09%'
ORDER BY
HISTORY_ID DESC;
여기서 DATE_FORMAT방식은 START_DATE에서 END_DATE를 빼고 남은 일수가 30일 이상인 값을 추출하는 함수를 가진다
(여기서 +1한 이유는 그냥 30일 차이만 빼면 29일이 되기 때문에 +1을 하여 남은 일수 30일을 채웠다.)
'SQL 정리' 카테고리의 다른 글
연속 서브쿼리 (0) | 2024.07.31 |
---|---|
WITH절 문제 예시 (0) | 2024.07.31 |
with (5) | 2024.07.24 |
OUTER, 테이블 여러개를 JOIN해야되는 경우 (2) | 2024.07.23 |
CONCAT과 SUBSTRING 응용 (0) | 2024.07.20 |