Php 根据注册日期每月更新数据库汇总

Php 根据注册日期每月更新数据库汇总,php,sql,database,Php,Sql,Database,需要帮助为数据库编写函数。我想根据会员订单的注册日期,每月跟踪会员订单的总成本。因此,如果有人在本月中旬注册,该功能应该在他们的注册日期加上30天,并将在该数据库中的时间和地点的销售额总和。然后显示在用户页面上。目前使用的是mysql函数,而不是PDO或mysqli 比如: <?php $query = ("SELECT SUM(cost) FROM memberOrders WHERE memberNumber='$memberNumber' GR

需要帮助为数据库编写函数。我想根据会员订单的注册日期,每月跟踪会员订单的总成本。因此,如果有人在本月中旬注册,该功能应该在他们的注册日期加上30天,并将在该数据库中的时间和地点的销售额总和。然后显示在用户页面上。目前使用的是mysql函数,而不是PDO或mysqli

比如:

<?php
     $query = ("SELECT SUM(cost) FROM memberOrders WHERE 
              memberNumber='$memberNumber' GROUP BY signupdate+30days");
?>

但不可能只有30天……应该是+30、+60、+90……这是我一直坚持的部分。谢谢

用PHP计算开始/结束日期,并使用子查询:

SELECT SUM(cost) FROM 
      (Select cost, membernumber from memberOrders WHERE 
      memberNumber='$memberNumber' and date >= '$startdate' and date <= '$enddate' 
      GROUP BY substr(date, 7))
GRoup by membernumber

假设您在MemberOrders中同时具有注册日期和订单日期,以下内容将返回订单的所有月份:

SELECT datediff(orderdate, signupdate, interval month) as MonthsAfter,
       SUM(cost) as MonthCost
FROM memberOrders
WHERE memberNumber='$memberNumber'
GROUP BY datediff(orderdate, signupdate, interval month)
如果您的所有月份都有30天,您可以:

SELECT floor(datediff(orderdate, signupdate, interval day)/30) as Months,
       SUM(cost) as MonthCost
FROM memberOrders
WHERE memberNumber='$memberNumber'
GROUP BY floor(datediff(orderdate, signupdate, interval day)/30)

注意:这两项都将0分配给注册后的第一个月。如果您想从1开始,请添加+1。

请出示您的表格,这是您可以提供的最少信息;你能解释一下功能吗?据我所知,您希望我指定开始和结束日期。开始日期是某人注册的日期…结束日期是…无限。这就是我遇到的问题,因为没有结束日期…我只希望数据库添加一个月,并从中检查如果您希望无限期地运行查询,上述查询将无法工作。我的建议是重新考虑数据库模型以满足您的需要。