1. ホーム
  2. mysql

[解決済み] MySQLによる昨日の日付の選択

2022-07-27 02:49:44

質問

昨日が日付の値を表示したり、数えたりするにはどうしたらよいでしょうか。 私は time() を使ってデータベースに日付を挿入しています。例

URL: google.com youtube.com google.com youtube.com test.com youtube.com
DateVisited: 1313668492 1313668540 1313668571 13154314

複数存在するURLの数と、そのURLに昨日何回アクセスしたかを表示したい。結果の例です。

LINK       | timesExisted | timesVisitedYesterday
Google.com |       2      | 2
youtube.com|       3      | 3

昨日の日付を取得することについては既にアイデアがあるのですが、昨日分のURLが何回存在したかをカウントすることと、テーブル内のURLが何回存在したかをカウントすることについてはアイデアがありません。

どのように解決するのでしょうか?

昨日の日付を取得する最もシンプルで最良の方法は。

subdate(current_date, 1)

あなたのクエリーはこうなります。

SELECT 
    url as LINK,
    count(*) as timesExisted,
    sum(DateVisited between UNIX_TIMESTAMP(subdate(current_date, 1)) and
        UNIX_TIMESTAMP(current_date)) as timesVisitedYesterday
FROM mytable
GROUP BY 1

好奇心旺盛な人のために、なぜ sum(condition) を与える理由は カウント を返します。そうでなければ、面倒で言葉の多い case ステートメントが必要になりますが、mysql ではブール値は 1 を真とし 0 というように、条件を合計することで、その条件が何回成立したかを効果的にカウントすることができます。このパターンを使用すると、SQLコードをすっきりさせることができます。