我有一个系统,客户可以在任何购买中获得信用。
现在,我想每三个月强制删除此信用额。
就像...如果某人有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/

10-12 06:58