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

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


  • 相关阅读:
    python基础day3-今日内容,2019-6-25
    python基础day3-视频下载,2019-6-25
    append,extend,insert的区别
    DOM基础之获取元素
    p1553数组反转
    python函数
    python文件处理
    day02 python基础之列表,元祖,字典
    day01 python基础
    Python绘图Turtle库详解
  • 原文地址:https://www.cnblogs.com/fuyujian/p/5025878.html
Copyright © 2020-2023  润新知