我有一个包含会员付款记录的数据库。像这样:
Payment Date | Amount
---------------------------------
2014-02-01 00:00:00 | 10
2014-02-21 00:00:00 | 10
2014-07-22 00:00:00 | 10
2014-08-16 00:00:00 | 10
2014-11-23 00:00:00 | 10
2015-03-17 00:00:00 | 10
2015-04-30 00:00:00 | 10
2015-06-11 00:00:00 | 10
2015-07-11 00:00:00 | 10
... ETC
付款金额可能会有所不同,但并非总是如此。
。我需要按星期,月份,三个月和一年的时间来获取付款记录,以及周期的总和和开始。
所以例如按年,我需要得到:
2014-01-01 00:00:00 - 50 //timestamp of beginning of the year
2015-01-01 00:00:00 - 40 //and the sum of payments that year
同样,对于季度记录,我需要得到:
2014-01-01 00:00:00 - 20 //timestamp of beginning
2014-04-01 00:00:00 - 0 //of the trimester
2014-07-01 00:00:00 - 20 //and the sum of the payments
2014-10-01 00:00:00 - 10 //that trimester
2015-01-01 00:00:00 - 10 //timestamp of beginning
2015-04-01 00:00:00 - 20 //of the trimester
2015-07-01 00:00:00 - 10 //and the sum of the payments that trimester
为了解决这个问题,我正在考虑两种可能的方法:
1) Put together a mysql query (if it possibly exists)
2) Get all the records from the user and just sort them with php
我准备去寻找php解决方案了,但有没有办法可以用mysql查询来实现?如果是这样,请您指导我完成该查询的路径?
此外,哪种解决方案更有效/更省时?
我希望我有道理。
答案 0 :(得分:1)
您可以使用WEEK()
,MONTH()
,QUARTER()
等功能获取这些群组。有一整套日期和时间函数here。
要获得每年的计数,您可以执行以下操作:
SELECT YEAR(paymentDate), SUM(amount) AS totalAmount
FROM myTable
GROUP BY YEAR(paymentDate);
然后,您可以使用MAKEDATE
函数获取一年中的第一天:
SELECT MAKEDATE(YEAR(paymentDate), 1);
您可能必须使用DATE_FORMAT
来配置某个月/季度的第一天,但您会在我分享的链接中找到必要的功能。