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 이후의 데이터는 포함하지 않게 된다.


내가 작성한 정답
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