我有一个客户数据库,并希望运行查询以显示每月有多少客户拥有活动帐户。
我已经有以下数据来计算每个月有多少客户有一个到期日期,但是有人可以建议一种方法来计算那些每月有一个expirydate> =现在的客户吗?
<?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;
?>
答案 0 :(得分:0)
简单
mysql_query( "select count(cid) as num_rows from customers WHERE expirydate >= curdate()" );
尽量避免使用 mysql _ *函数,因为它们已被删除。请使用 mysqli _ *函数或 PDO 陈述
答案 1 :(得分: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`
还尝试在表中使用timestamp字段类型而不是varchar等。
答案 2 :(得分: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月)。
您应该查看date and time functions和group by/aggregate functions以获取更多信息。