[SQL문제풀기] 버뮤다 삼각지대에 들어가버린 택배 - between과 날짜

silver's avatar
Feb 26, 2025
[SQL문제풀기] 버뮤다 삼각지대에 들어가버린 택배 - between과 날짜
Contents
문제

문제

내가 작성한 오답

: datetime 시 날짜지정 오류
select strftime('%Y-%m-%d',order_delivered_carrier_date) delivered_carrier_date, count(*) orders from olist_orders_dataset where order_delivered_customer_date is null and order_delivered_carrier_date between '2017-01-01' and '2017-01-31' group by strftime('%Y-%m-%d',order_delivered_carrier_date) order by delivered_carrier_date asc
💡
BETWEEN '2017-01-01' AND '2017-01-31'는 2017년 1월 1일부터 2017년 1월 31일 23:59:59까지의 모든 값을 포함한다.
하지만, order_delivered_carrier_date가 DATETIME 형식일 경우, 2017-01-31은 2017-01-31 00:00:00을 의미하므로, 2017-01-31을 포함하려면 BETWEEN 구문을 사용할 때 b의 값을 2017-01-31 23:59:59로 설정해야 한다.
→ BETWEEN '2017-01-01' AND '2017-01-31'는 2017년 1월 31일 00:00:00까지의 데이터만 포함하고, 2017년 1월 31일 23:59:59 이후의 데이터는 포함하지 않게 된다.
notion image
notion image

내가 작성한 정답

select strftime('%Y-%m-%d',order_delivered_carrier_date) delivered_carrier_date, count(*) orders from olist_orders_dataset where order_delivered_customer_date is null and order_delivered_carrier_date between '2017-01-01' and '2017-02-01' group by strftime('%Y-%m-%d',order_delivered_carrier_date) order by delivered_carrier_date asc
💡
ORACLE → to_char(colum, 형식)
MYSQL→ date_format(column, 형식)
SQLite → strftime( 형식(mysql과 동일하게 작성), column)
 
Share article

silver