zoukankan      html  css  js  c++  java
  • ef linq 查询某时间段内数据 踩的坑

    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()是数据库服务器的系统时间
    如果两台服务器设置的系统时间不一样,你懂的。结果肯定不一样

    今天调试代码发现的问题,留作纪念。
    不知道哪个二逼把服务器时间改了


  • 相关阅读:
    6、方法
    5、封装
    4、循环
    3、判断
    2、基本语法
    1、基本框架
    CodeForces 681C Heap Operations(模拟)
    CodeForces 682C Alyona and the Tree(广搜 + 技巧)
    URAL 2099 Space Invader题解 (计算几何)
    HDU 5833 (2016大学生网络预选赛) Zhu and 772002(高斯消元求齐次方程的秩)
  • 原文地址:https://www.cnblogs.com/fuyujian/p/5025878.html
Copyright © 2011-2022 走看看