我必須查詢我的表的日期時間間隔。假設我有以下4行:生成sql代碼中的sqlite和strftime格式字符串
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> =開始& & t.EndTime < =端);
成爲類似的東西:
//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' 和P3 = 2014年9月19日23:45:00.000
結果我得到2行而不是4行。我調查了這個問題,看到如果格式字符串有%S而不是%f那麼一切都很好。我不知道這是一個錯誤還是一個預期的行爲,但我希望得到正確的結果。
我想System.Data.Sqlite提供程序負責生成sql代碼,但閱讀此提供程序的源代碼(SqlGenerator.cs和SQLite3.cs)我沒有發現任何看起來很奇怪的東西。
現在的問題是:我可以影響一些如何在sql代碼生成中,我可以提供一個提示使用'%Y-%m-%d%H:%M:%S' format '%Y-%m-%d%H:%M:%f'爲strftime函數?