我有一个系统,客户可以在任何购买中获得信用。
现在,我想每三个月强制删除此信用额。
就像...如果某人有1月2月的信用额度...现在...当4月一个月到来时它会自动删除1月月份的信用额度并重新计算接下来的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个学分将转到下个月(4月),但是如何从中删除第一个月(1月)学分。
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个月内计算日期和时间记录。从字面意义上讲,可以追溯到90天,而与每月29,30,31天无关。如果您本月9日开始学习,那么您将过去9天结束。使事情变得容易。
now()是当前系统时间。
interval 3 month ...是用于计算从当前系统时间开始回溯3个月的命令。
您必须将整行与条件> =(大于或等于)配对
例:
activitydatetime >= date(now() - interval 3 month)
关于mysql - 期末如何取消个人信用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57986420/