1

顧客のデータベースがあり、月ごとにアクティブなアカウントを持っている顧客の数を表示するクエリを実行したいと考えています。

毎月有効期限がある顧客の数を数えるために、私はすでに次のものを持っていますが、毎月の有効期限が現在> =になっている顧客を数える方法を誰かが提案できますか?

<?php 
$query = "select count(cid) as num_rows from customers WHERE expirydate LIKE '%-12-%'";
$result = mysql_query($query); 
$row = mysql_fetch_object( $result ); 
$total = $row->num_rows; 
echo "December: " .$total; 
?>
4

3 に答える 3

0

このクエリは、今から有効期限が切れた顧客の数を示します。ケースに合わせてSTR_TO_DATE関数の日付形式を修正してください。MySQL STR_TO_DATE

SELECT COUNT(*) as `num_rows`, MONTH(STR_TO_DATE(`expirydate`,'%Y-%m-%d')) as `month`
FROM `customers`
WHERE STR_TO_DATE(`expirydate`,'%Y-%m-%d') > NOW()
GROUP BY `month`

また、テーブルで varchar などの代わりにタイムスタンプ フィールド タイプを使用してみてください。

于 2013-06-20T10:11:52.660 に答える
0

単純

mysql_query( "select count(cid) as num_rows from customers WHERE expirydate >= curdate()" );

mysql _* 関数は非推奨であるため、使用を避けるようにしてください。代わりに、mysqli _ * 関数またはPDOステートメントを使用してください。

于 2013-06-20T10:05:48.017 に答える
0

以下は、今日以降に記録の有効期限が月ごとに設定されている顧客が多いことを示しています。

SELECT 
    MONTH(expirydate) month, COUNT(cid) as count 
FROM 
    customers 
WHERE 
    DATE(expirydate) >= CURDATE() 
GROUP BY MONTH(expirydate)

ただし、このグループは月ごとにのみグループ化されるため、複数の年にまたがるレコードは誤解を招く可能性があることに注意してください (たとえば、2013 年 7 月 3 日と 2014 年 7 月 7 日は両方とも 7 月としてカウントされます)。

詳細については、日付と時刻の関数グループ化/集計関数を調べる必要があります。

于 2013-06-20T10:14:40.283 に答える