DS가 되기 위한 여정 👩‍💻

Data Science/SQL

[프로그래머스 sql] datetime에서 시간 제외 date()

Tashapark 2025. 3. 30. 23:41
728x90
반응형

..?  이게 왜 안되는 지 모르겠음..?

- date()가 적용이 안됌. 

SELECT HISTORY_ID, CAR_ID, date(START_DATE), END_DATE,
        case when (END_DATE - START_DATE) >= 30 THEN '장기 대여'
        else '단기 대여' end as RENT_TYPE
from CAR_RENTAL_COMPANY_RENTAL_HISTORY
order by HISTORY_ID;

 

- mysql이 되어야 하는데 이유를 모르겠음. 

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) >= 30 THEN '장기 대여'
            ELSE '단기 대여' END AS RENT_TYPE
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
ORDER BY HISTORY_ID;

 

- 일단 문제를 제대로 읽지 않아서 desc 도 놓쳤고, 

- 2022-09 조건도 놓쳤음. => 이것도  like는 string만 되기 때문에 between and 로 해줘야 함. 

- date_format(칼럼, '%Y-%m-%d') 이거 쓰는 것은 괜찮은데. 

- datediff(시작 날짜, 종료 날짜) 여기가 문제였음. 

- 시작 날짜도 포함되어야 하기 때문에 +1 으로 해줘야 함. 

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 BETWEEN '2022-09-01' AND '2022-09-30'
ORDER BY HISTORY_ID desc;
728x90
반응형