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

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

ef linq 查询某时间段内数据 踩的坑的相关文章

mysql查询特定时间段内的数据

SET FOREIGN_KEY_CHECKS=0; -- Table structure for t_user -- ---------------------------- DROP TABLE IF EXISTS t_user; CREATE TABLE t_user ( userId bigint(20) NOT NULL, fullName varchar(64) NOT NULL, userType varchar(16) NOT NULL, addedTime datetime NO

Oracle查询某个时间段内第天的统计数

1:Oracle查询某个时间段内,每天发送短信的总条数 select tab.tday,       (select count(1) from t_msgsendrecode m where trunc(m.sendtime) = to_date(tab.tday,'yyyy-mm-dd'))from ( select * from (select to_char(add_months(last_day(to_date('2015-6-2','yyyy-mm-dd'))+1,-1),'YYYY

基于py3和pymysql查询某时间段的数据

#python3 #xiaodeng #基于py3和pymysql查询某时间段的数据 import pymysql conn=pymysql.connect(user='root',passwd='root',host='localhost',db='test.db') cur=conn.cursor() '''[核心语句]''' cur.execute("select grage from 表名 where 时间字段 between '开始时间' and '结束时间'") #eg:

数据库SQL语句查询指定时间段内的数据

[摘要]有的时候,我们需要查询数据库某段时间之间的数据,比如2016年5月1号到到5月3号之间用户注册数量(特殊节假日期间)等.那么用SQL语句如何实现呢? 首先,数据表中的存时间的字段比如是addtime可能是时间戳(varchar),也可能是用timestamp类型表示,如果是时间戳格式当然好办,如果是timestamp格式:YYYY-MM-DD HH:II:SS这个格式,如2016-05-01 00:00:00这种格式的SQL语句怎么表示?有下面两张方式: (1)第一种方法,使用关键字be

SQL查询某个时间段内的8-9点的数据

select datename(HOUR,rd.SignTime) 使用这个SQL函数就能查找到rd.SignTime的小时为多少 使用: SELECT * FROM table rd WHERE (select datename(HOUR,rd.SignTime))=8 则可以查询到  8:00:00-8:59:59的数据(就是 小时 为  8 的 时间)

SQL Server 查询时间段内数据

方式一: ALTER Proc [dbo].[usp_Rpt_AcctTypeAudit] @FromDate datetime=null, -- yyyy-mm-dd (may change in the future!) @ToDate datetime=null, -- yyyy-mm-dd (may change in the future!) @UserID nvarchar(50) = 'ALL' as BEGIN set nocount on if @ToDate is not n

MySQL通过POIN数据类型查询指定范围内数据

SELECT *, AsText(location) as 原始坐标数据, (st_distance(location, point(116.397915,39.908946))*111) AS distance FROM oc_district HAVING distance<100 ORDER BY distance limit 100; 原文地址:https://www.cnblogs.com/Soy-technology/p/10981124.html

查询SQL时间段内执行过的哪些SQL语句

SELECT TOP 1000 QS.creation_time, SUBSTRING(ST.text, (QS.statement_start_offset / 2) + 1, ((CASE QS.statement_end_offset WHEN - 1 THEN DATALENGTH(st.text) ELSE QS.statement_end_offset END - QS.statement_start_offset) / 2) + 1) AS statement_text, ST.t

Sqlite查询时间段内的数据问题解决!

最近搞Sqlite本地查询,需求为查询某时间段内的数据,在SQL中我们都知道为: [sql] view plaincopyprint? select * from tblName where rDate Between '2008-6-10' and  '2008-6-12' select * from tblName where rDate Between '2008-6-10' and '2008-6-12' 这样子是没有问题的,但是在Sqlite中我们这样子写是得不到结果的,试了好多次终于