MySQL 으로 풀었는데, 풀다보니 분명 맞는거 같지만 계속 오답이라 하여 글을 남겨봅니다.
일단 왜 오답이 나오는지 계속 찾다보니, CAR_ID가 1인경우 DATEDIFF(END_DATE +1 , START_DATE) 만 빈값이 나오더라고요.
DATEDIFF함수를 사용해서, END_DATA에 1을 날짜 평균값 계산하기 전에 1을 더해줘서 했는데 왜그러는 걸까요? (다른 것들은 다 정상으로 잘 나와서 더 의문..)
SELECT CAR_ID ,
DATEDIFF(END_DATE , START_DATE) AS one, DATEDIFF(END_DATE +1 , START_DATE) AS two
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY;
의 경우
| CAR_ID | one | two |
|---|---|---|
| 중간 | 생략 | -- |
| 2 | 30 | 31 |
| 2 | 93 | 94 |
| 1 | 30 |
SELECT END_DATE, END_DATE +1 를 실행 해 보면 두 경우의 데이터 형식이 다르게 출력되는 것을 확인할 수 있습니다. 이때 2022년 11월 30일의 경우 1을 더했을 때 12월 1일이 아닌 11월 31일이라는 존재하지 않는 날짜 데이터로 바뀌게 됩니다. 날짜를 계산할 때는 단순 덧셈/뺄셈이 아닌 DATE_ADD를 이용해 연산해야합니다. 작동 안되던 코드는 아래와 같이 수정하면 정상적으로 결과가 나오는 것을 확인할 수 있습니다.
SELECT CAR_ID ,
DATEDIFF(END_DATE , START_DATE) AS one, DATEDIFF(DATE_ADD(END_DATE, INTERVAL 1 DAY), START_DATE) AS two
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
아하! 제 역량 부족이였군요! 친절히 알려주셔서 감사합니다 ㅎㅎ