我有一个系统,客户可以在任何购买中获得积分。 现在我想每三个月后强制删除此信用额。 就像...如果某人有一月二月三月的学分...现在当四月到来时它会自动删除一月月份的学分并重新计算接下来的 3 个月。
这里的信用条目表示客户已经购买了一些东西...因此他们的帐户记入了一些积分。
借方条目表示他们将此贷方用作订单中的资金
我有如下所示的表格条目
<小时/> (cr_dr) (cr_dr)
Credit Debit
(created_on)
Jan 10 00
00 05
(created_on)
Feb 10 00
00 05
00 07
(created_on)
Mar 10 00
00 03
00 07
(created_on)
Apr 10 00
对于一月、二月、三月的情况
Total Credits(for last 3 months only ) = Total Credit - Total Debit
3 = 30 - 27
这 3 个积分将转到下个月(四月),但如何从中删除第一个月(一月)积分。
SELECT SUM(COALESCE(CASE WHEN cr_dr = 'Credit' THEN amount END,0)) -
SUM(COALESCE(CASE WHEN cr_dr = 'Debit' THEN amount END,0)) balance
FROM cb_customer_credit_log WHERE coupon_assignee = "1" AND created_on >= now() - interval 3 month ")
最佳答案
我相信你需要这样的东西。
date(now() - interval 3 month)
此代码仅计算 3 个月内的日期和时间记录。从字面意义上讲,无论每月 29、30、31 天,都是 90 天之前。如果你从本月 9 号开始,那么你最终会是过去的 9 号。让事情变得更容易。
now() 是当前系统时间。
Interval 3 Month ...是计算从当前系统时间回溯3个月的命令。
您必须将整行与条件 >=(大于或等于)配对
示例:
activitydatetime >= date(now() - interval 3 month)
关于mysql - 期末如何删除个人信用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57986420/