0

サブスクリプションが 1 か月 (30 日) 以内に期限切れになるテーブル内のユーザーをカウントしたいと考えています。これが私のコードです:

user_db

id         name        exp_date
1          John        2013-03-01
2          Alice       2013-02-25
3          Ken         2013-01-10
4          Elise       2013-04-11
5          Bruce       2013-03-14

上記DBによると。サブスクリプションの有効期限が切れようとしているのは、ジョン、アリス、ブルースの 3 人です。ケンはこれ以上購読したくないので、カウントされたくありません。

これが私のMySQLコードです:

SELECT count(id) AS exp_pax, 
       datediff(exp_date,now()) AS day_left 
FROM labour_db 
WHERE day_left<=30

コードは、1 日の合計が 30 未満の行のみを選択しますが、カウントしません。だからあなたは私に提案してください。

よろしく、

4

3 に答える 3

1

その場合はexp_date、今日よりも小さいかどうかを確認する条件を追加する必要があります。

SELECT  COUNT(*) totalCount
FROM    user_db 
where   exp_date <= timestampadd(day, 30, now()) AND
        exp_date > NOW()
于 2013-02-20T13:00:44.610 に答える
1

(1) 有効期限が現在から 30 日以内で、(2) 有効期限が今より前でないすべてのレコードをカウントする場合は、次を使用します。

SELECT count(*) AS exp_pax 
FROM   user_db 
WHERE exp_date<=timestampadd(day, 30, now())
       AND exp_date >= now();
于 2013-02-20T13:01:16.390 に答える
0

を削除しgroup by idてカウントを取得します。

ご想像のとおり、カウントは行をロールアップしますが、句と組み合わせると、group by各「グループ」をカウントします。たとえば、有効期限でグループ化するために、これを便利に使用できます。

于 2013-02-20T12:51:40.083 に答える