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()是数据库服务器的系统时间
如果两台服务器设置的系统时间不一样,你懂的。结果肯定不一样
今天调试代码发现的问题,留作纪念。
不知道哪个二逼把服务器时间改了