会社に新人さんが入ってきたので研修の様子を横目に眺めていた。データ分析主体の会社なので当然SQLから始めるのだけれども、初めてSQLに触れる人はまず確実にDATE()関数で躓いている。自分も躓いた。正しくは、BETWEEN句に日付だけをそのまま入れるおかげで、最後の日付の丸一日分がすっぽり抜け落ちてしまっているのである。 期間に正確にログを取るのであれば(これはpostgreSQLの話であるが)、 WHERE timestamp BETWEEN '2018-02-01' AND '2018-02-07' ではなく、 WHERE timestamp BETWEEN '2018-02-01 00:00:00' AND '2018-02-07 23:59:59' ないし WHERE DATE(timestamp) BETWEEN '2018-02-01' AND '2018-02-07' の形に