レタスのかわをぜんぶむく

ぜんぶむきます

期間指定でやらかし(かけ)た話

既に走ってるサービスだとログとか取り続けていて
いざ何か問題が起きた時にその調査をログベースで対応したりする。


そんでやって参りましたログ調査。
特定の種類のユーザーについて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;

これで期待した結果になった!
ちゃんと時間まで指定しましょう!