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

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)
-
fate sta VIP0
2025/1/1AddSeconds(参数) 参数在sqlite中目前只能是变量不能是字段
0 回复 -
fate sta VIP0
2025/1/1我这边看看能不能优化一下
0 回复 -
fate sta VIP0
2025/1/3sqlite暂时实现不了 这个函数
0 回复