PHP Week(curdate()) 其他年份的总和


php week(curdate()) sum of other years

好的,所以我有这个查询:

SELECT obrero as MAESTRO, sum(costo_semanal) AS TOTAL_COST,
            ROUND(SUM(week_cost)/MONTH(CURDATE()),2)  AS MONTHLY_COST,
            ROUND(SUM(week_cost)/WEEK(CURDATE()),2)   AS WEEKLY_COST
            from tbl_costos WHERE obrero ='$maestro'

我这样做了,它在 2015 年效果很好,问题是现在在 2016 年我们回到第 1 周和第 1 个月,所以我没有适当的划分。

我需要完成的是将过去一年的 52 周相加,并将今年的当前一周相加,这样我就可以每周获得 % 的成本

"成本/周数"= 每周 $cost。

例如,今天 2016-01-18 是一年中的第 4 周

支付总额(2015 年和 2016 年 4 周)= 4000.00 USD周 = 52 + 4 = 56

4000.00/56 = 每周平均成本 71.4285714 USD

同样的事情也适用于月份,它应该用 13 进行除法,而 cus 1 月是第 1 个月,它超过 1。

我可以做:

SUM(week_cost)/(12+ MONTH(CURDATE()));

SUM(week_cost)/(52 + WEEK(CURDATE()));

但这只能解决今年的问题!!

您应该使用 DATEDIFF() 来计算每位大师从给定日期"start_date"到给定结束日期"end_date"的工作天数,然后根据需要将这些天数转换为周、月和年。

保持灵活性,并预测每个大师可以从任何给定日期开始工作,或者可以从任何给定日期开始要求报告。 您假设每位大师都在 2015-01-01 开始工作,并且所有报告都应牢记这一点。 现实是不同的。

Select obrero as MAESTRO, sum(costo_semanal) as TOTAL_COST, ROUND(SUM(costo_semanal/ROUND(DATEDIFF(start_date, end_date)/30,0)),0) AS MONTHLY_COST, ROUND(SUM(costo_semanal/ROUND(DATEDIFF(start_date, end_date)/7,0)),0) AS WEEKLY_COST FROM tbl_costos WHERE obrero=$maestro;

不要将变量$maestro放在查询上,最好使用 READY 语句