报告一下:可能是一个小bug 返回

SqlSugar 处理完成
3 246

Sqlite数据库, 数据表里有:

TimeOutSecond (int)

UpdateTime (datetime)


我们期望得到 UpdateTime + TimeOutSecond 仍然小于当前时间的结果集,所以使用如下语句查询:

var idList = await deviceRep.AsQueryable()

.Where(u => ((DateTime)u.UpdateTime).AddSeconds(u.TimeOutSecond) < DateTime.Now)

.ToListAsync();

然而,这不会得到任何结果,sugar转换后的语句如下:


[Sql]:

SELECT * FROM `device`

WHERE DATETIME(DATETIME(`update_time`), '+ Seconds') < @Const2

[Name]:@Const2 [Value]:2025/1/1 17:10:45 [Type]:DateTime


---------------------------------------------------------------------------------


如果我们使用下面的语句直接操作数据库

SELECT id, device_status, update_time, time_out_second

FROM rod_device

WHERE device_status = 'idle'

AND strftime('%s', update_time) + time_out_second < strftime('%s', 'now');

则会得到正确的结果。


---------------------------------------------------------------------------------

如果把数据库换成mysql,也会得到正确的结果


那么,这会不会是sugar在操作sqlite时存在的bug?


热忱回答3

  • AddSeconds(参数)   参数在sqlite中目前只能是变量不能是字段

    0 回复
  • 我这边看看能不能优化一下

    0 回复
  • sqlite暂时实现不了 这个函数 

    0 回复