期間指定でやらかし(かけ)た話
既に走ってるサービスだとログとか取り続けていて
いざ何か問題が起きた時にその調査をログベースで対応したりする。
そんでやって参りましたログ調査。
特定の種類のユーザーについて7,8月のユーザー数を見たい。
SELECT count(*) FROM users WHERE last_login BETWEEN '2015-07-01' AND '2015-07-31';
よし、7月だからこれで良いよね。
単一テーブルだから楽勝楽勝。
と思うじゃないですか。
若干思ってたより少ないなーと思って
SELECT id, last_login FROM users WHERE last_login BETWEEN '2015-07-01' AND '2015-07-31' ORDER BY last_login DESC LIMIT 10;
こんな感じでとったら
+---------+---------------------+ | id | last_login | +---------+---------------------+ | userid1 | 2015-07-30 23:59:47 | | userid2 | 2015-07-30 23:59:35 | | userid3 | 2015-07-30 23:57:46 | +---------+---------------------+
ものの見事に31日のログが抜けてる!
なるほどそっちか!
パッと見上手くいきそうなのがすごくあかん。
ということで正しくは下記。
SELECT id, last_login FROM users WHERE last_login BETWEEN '2015-07-01 00:00:00' AND '2015-07-31 23:59:59' ORDER BY last_login DESC LIMIT 10;
これで期待した結果になった!
ちゃんと時間まで指定しましょう!