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

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


  • 相关阅读:
    微信公众号分析
    微信自动聊天机器人
    使用itchat分析自己的微信(1)
    内容补充 ----- 易错点
    运算符优先级
    亡羊补牢系列之字符串格式化
    亡羊补牢之python基础语法
    python基础,构建一个301个字典库
    mysql每个表总的索引大小
    mysql 查看单个表每个索引的大小
  • 原文地址:https://www.cnblogs.com/fuyujian/p/5025878.html
Copyright © 2011-2022 走看看