生成的sql代码中的Sqlite和strftime格式字符串

时间:2015-10-14 13:37:12

标签: linq sqlite system.data.sqlite

我必须查询我的表的日期时间间隔。假设我有以下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函数?

1 个答案:

答案 0 :(得分:0)

我找到了答案here,可以提供额外的sql语句以及strftime函数的正确用法(对于两个操作数)。