从现在起30天内使用MySQL INTERVAL CASE

时间:2017-11-05 09:04:56

标签: c# mysql date

我正在测试自动结算周期系统。我有一个C#脚本,每分钟运行一次,检查下一个开票日期,但我在运行时遇到代码问题。它返回一个空日期但如果我从30天更改为14天,则脚本的工作方式就像它的意思。它意味着从上一个结算日的X天开始运行下一个结算周期,同时跳过周末。

这部分代码工作正常:

command.CommandText = "SELECT * FROM bill_cycle WHERE DATE(NOW()) >= DATE(date_Start) AND (Next_cycle IS NULL OR Next_cycle = '' OR DATE(NOW()) >= DATE(Next_cycle)) AND status != 'suspend' AND cycle_Total != '0'";

var bill_cycle = command.ExecuteReader().ListRecordsAsDictionaries();
foreach (IDictionary<string, string> dictionary in bill_cycle)
                    {

它意味着在此括号内运行代码以进行结算周期,以便为客户端创建pdf并向电子邮件服务器发送电子邮件。

这部分代码是我遇到的问题所在:

UPDATE bill_cycle 
SET Last_cycle=NOW(), 
    Next_cycle=(NOW() + INTERVAL CASE WEEKDAY(NOW() + INTERVAL 30 DAY) 
                                     WHEN 5 THEN 30+2 
                                     WHEN 6 THEN 30+1 
                                 END DAY) 
WHERE id = 20

}  Thread.sleep代码(60000); 等到计时器结束并再次运行。

基本上,它不会在下一个30天的结算周期更新客户端。它的值是对MySQL时间戳的重要值,导致它被卡住并反复重新运行脚本。

0 个答案:

没有答案