2015-10-14 56 views
0

我必須查詢我的表的日期時間間隔。假設我有以下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函數?

回答

0

我找到了我的答案here,可以提供額外的sql語句以及strftime函數的正確用法(對於兩個操作數)。