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