我必须查询我的表的日期时间间隔。假设我有以下4行:
id typeId start end
1 11 18.09.2014 18.09.2014 23:45:00
2 11 19.09.2014 19.09.2014 23:45:00
3 12 18.09.2014 18.09.2014 23:45:00
4 12 19.09.2014 19.09.2014 23:45:00
Linq查询如下:
model.Entities.Where(t => t.StartTime> = start&& t.EndTime< = end);
就是这样:
//some omitted sql select from
where a.[StartTime] >= strftime('%Y-%m-%d %H:%M:%f', @p2)
AND
a.[EndTime] <= strftime('%Y-%m-%d %H:%M:%f', @p3)
p2 ='2014-09-18'and p3 = 2014-09-19 23:45:00.000
结果我得到2行而不是4行。我已经调查了这个问题,看到如果格式字符串有%S 而不是%f 那么一切都很好。我不知道这是一个错误还是预期的行为,但我希望得到正确的结果。
我想System.Data.Sqlite提供程序负责生成sql代码,但是读取这个提供程序的源代码(SqlGenerator.cs和SQLite3.cs)我没有找到任何看起来很奇怪的东西。
问题是:我可以影响一些如何生成sql代码,我可以提供一个提示使用'%Y-%m-%d%H:%M:%S'格式字符串而不是'%Y-%m-%d%H:%M:%f'用于strftime函数?