DateTime.Now.AddDays(-i).Date预期行为不一致 返回

SqlSugar 待处理
1 70
该叫什么 itben 发布于1周前
悬赏:5 飞吻
        for (int i = 0; i < days; i++)
        {
            Console.WriteLine($"{i} {DateTime.Now.AddDays(-i).Date}");    
                    
            var vipCount = await DbScoped.SugarScope.Queryable<MainTask>()
                .Where(x => x.Id == id && x.Type == type && x.CreateTime.Date == DateTime.Now.AddDays(-i).Date)
                .SumAsync(x => x.CompleteCount); 
        }

输出:

6 2026/1/30 0:00:00 这儿每次循环正常输出

SELECT SUM(`CompleteCount`) FROM `MainTask`  WHERE ((( `Id` = '111' ) AND ( `Type` = 3 )) AND (  strftime('%Y-%m-%d', `CreateTime`) =  strftime('%Y-%m-%d',  DATETIME(DATETIME('2026-02-05 01:52:48.104'), '+ Days')) ))

但是sql语句处理当前时间的时间部分在变化以外,红色日期部分一直不变

DateTime.Now.AddDays(-i).Date

预期行为应该是日期随着循环次数减少,但是实际却一直保持不变


热忱回答1

  • itben itben VIP0
    1周前

    已解决,问题出在

    DateTime.Now.AddDays(-i).Date

    sqlsugar无法正确处理linq中的-i

    将日期提前计算好即可解决问题

    0 回复