var now = DateTime.Now;
var list =db.Jinbi_TypeLimit.Where(x => x.IsAvailable && x.JinbiType == jinbitype && x.StartDateTime <= now && now <= x.EndDateTime);//.ToList(); var list1 =db.Jinbi_TypeLimit.Where(x => x.IsAvailable && x.JinbiType == jinbitype && x.StartDateTime <= DateTime.Now && DateTime.Now <= x.EndDateTime);//.ToList();
執行的結果:
list: 兩條數據
list1:0條數據
原因分析:
list:
最終數據庫執行的語句,時間比較部分轉化為
x.StartDateTime <= '2015-12-07' &&'2015-12-07'<= x.EndDateTime
list1:
最終數據庫執行的語句,時間比較部分轉化為
x.StartDateTime <= (SYSDATETIME()) &&(SYSDATETIME())<= x.EndDateTime
語句本身來看這個本身也沒什么不對,但是 如果程序和數據庫不在一台服務器(現在大部分情況都是這樣的吧),如果web服務器和數據庫服務器的時間不一樣的話,情況來了。(估計你現在已經想到了)
對於list,時間是變量傳入的,那就是web服務器的系統時間
對於list1,SYSDATETIME()是數據庫服務器的系統時間
如果兩台服務器設置的系統時間不一樣,你懂的。結果肯定不一樣
今天調試代碼發現的問題,留作紀念。
不知道哪個二逼把服務器時間改了