티스토리 뷰

포스팅에 앞서 내용이 틀릴 수 있습니다.
해당 부분 지적 감사히 받습니다.

문제를 보자.

 

 

문제를 풀고 난 후, 실무에서 중요하게 쓰일 것 같다고 느꼈다.

 

기능적인 면에서 필요한 데이터를 조회하는 것 또한 당연히 중요하다.

 

하지만 원하는 데이터를 추출한 후 필요한 형태로 가공하는 것 또한 빼놓을 수 없는 요소이다.

 

이번 문제 분류는 해당 방법에 대한 숙련도를 키우기 위해 존재한다.

 

LEVEL 1의 문제지만, 많은 시도를 통해 정답을 받아냈다 ㅋㅋ;;

 

쿼리부터 보자.

 

쿼리

SELECT HISTORY_ID
    ,   CAR_ID
    ,   TO_CHAR(START_DATE,'YYYY-MM-DD') START_DATE
    ,   TO_CHAR(END_DATE,'YYYY-MM-DD') END_DATE
    , (CASE WHEN TO_DATE(END_DATE) - TO_DATE(START_DATE) > 28 THEN '장기 대여' ELSE '단기 대여' END ) RENT_TYPE
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE TO_CHAR(START_DATE,'YYYYMM') = 202209
ORDER BY 1 DESC

 

새로 배우게 된것은, 날짜를 계산할 때는 단순히 "-"를 사용하면 안 된다. 2022년 1월 1일과 2021년 12월 31일은 실제로 하루차이지만 뺄셈 연산자를 사용하게 되면, 그 값을 신뢰할 수 없다.

 

날짜를 연산하기 위해서는 TO_DATE()함수를 사용하면 된다.

 

해당 함수를 사용하기위해 반드시 숙지해야 할 사항이 있다.

 

2022년 9월 1일, 2022년 9월 30일을 계산하면 어떤 결과가 나올까?

 

필자는 29일이 나올거라 예상했었다.

 

실제로는 30일이 나오게 된다.

 

따라서 해당 함수의 같은 시간 단위에 대한 계산은 해당 시간 단위에 1을 더해줘야 한다.

 

따라서 "9월 2일 - 9월 1일"은 "2일"이라는 결과가 도출된다.

 

 

 

 

댓글