inblog logo
|
silver
    SQL문제풀기

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

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

    문제

    solvesql.com
    solvesql.com
    https://solvesql.com/problems/shipment-in-bermuda/

    내가 작성한 오답

    : 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

    RSS·Powered by Inblog