EntityFramework 根据时间筛选数据
需求:根据当前时间,获取条件合适的数据,其中截止时间只比较日期。
1. 运行会报错的版本:
var lifeWorkEventBatch = clientRepositoryContainer.LifeWorkEventBatchRepository.FindAll(lfe => lfe.SelectionStartTime <= DateTime.Now && lfe.SelectionEndTime >= DateTime.Now.Date).FirstOrDefault();
这里查资料得知:sql里面没有根据当前日期再获取Date的函数,因此不能转换成功,直接报错。
2.比较整个时间,不取出当前日期进行比较,有bug:
var lifeWorkEventBatch = clientRepositoryContainer.LifeWorkEventBatchRepository.FindAll(lfe => lfe.SelectionStartTime <= DateTime.Now && lfe.SelectionEndTime >= DateTime.Now).FirstOrDefault();
该linq转化为sql语句为:
SELECT
[Extent1].[pkLifeWorkEventBatch] AS [pkLifeWorkEventBatch],
[Extent1].[LifeWorkEventBatchCode] AS [LifeWorkEventBatchCode],
[Extent1].[SelectionStartTime] AS [SelectionStartTime],
[Extent1].[SelectionEndTime] AS [SelectionEndTime],
[Extent1].[Status] AS [Status],
[Extent1].[Description] AS [Description],
[Extent1].[CreateOn] AS [CreateOn],
[Extent1].[CreateBy] AS [CreateBy],
[Extent1].[LastModifyOn] AS [LastModifyOn],
[Extent1].[LastModifyBy] AS [LastModifyBy]
FROM [dbo].[LifeWorkEventBatch] AS [Extent1]
WHERE ([Extent1].[SelectionStartTime] <= (SysDateTime())) AND ([Extent1].[SelectionEndTime] >= (SysDateTime()))
3.实现需求的无错版本:
var dateTimeNow = DateTime.Now;
var lifeWorkEventBatch = clientRepositoryContainer.LifeWorkEventBatchRepository.FindAll(lfe => lfe.SelectionStartTime <= dateTimeNow && lfe.SelectionEndTime >= dateTimeNow.Date).FirstOrDefault();
转化后的sql
exec sp_executesql N'SELECT
[Extent1].[pkLifeWorkEventBatch] AS [pkLifeWorkEventBatch],
[Extent1].[LifeWorkEventBatchCode] AS [LifeWorkEventBatchCode],
[Extent1].[SelectionStartTime] AS [SelectionStartTime],
[Extent1].[SelectionEndTime] AS [SelectionEndTime],
[Extent1].[Status] AS [Status],
[Extent1].[Description] AS [Description],
[Extent1].[CreateOn] AS [CreateOn],
[Extent1].[CreateBy] AS [CreateBy],
[Extent1].[LastModifyOn] AS [LastModifyOn],
[Extent1].[LastModifyBy] AS [LastModifyBy]
FROM [dbo].[LifeWorkEventBatch] AS [Extent1]
WHERE ([Extent1].[SelectionStartTime] <= @p__linq__0) AND ([Extent1].[SelectionEndTime] >= @p__linq__1)',N'@p__linq__0 datetime2(7),@p__linq__1 datetime2(7)',@p__linq__0='2019-07-31 12:52:40.5630849',@p__linq__1='2019-07-31 00:00:00'
从两次转化后的sql语句可以看出,先获取系统日期,再在linq中使用,则直接转化成为了日期类型的参数。
EntityFramework 根据时间筛选数据的更多相关文章
- 开始VS 2012中LightSwitch系列的第4部分:太多信息了!使用查询来排序和筛选数据
[原文发表地址] Beginning LightSwitch in VS 2012 Part 4: Too much information! Sorting and Filtering Data ...
- Python实战171201筛选数据
Python应用:网络编程,系统网络运维,3D游戏开发,图形界面开发,科学与数字计算,web后端. 对着慕课的练习,果然慕课的实战也是差距很大-------centos7 -Python3.6.3 筛 ...
- Django中条件过滤:按时间筛选
你有没有遇到过,需要按时间筛选的问题? 我在models中的字段为dateTimeField,那么我该如何构造一个时间格式来和它比较呢? 索性我们有datetime模块 import datetime ...
- 20170813xlVBA跨表筛选数据
一.数组方案 Sub CustomFilter() Dim Rng As Range, Arr As Variant Dim EndRow As Long, EndCol As Long Dim i ...
- pandas处理日期时间,按照时间筛选
pandas有着强大的日期数据处理功能,本期我们来了解下pandas处理日期数据的一些基本功能,主要包括以下三个方面: 按日期筛选数据 按日期显示数据 按日期统计数据 运行环境为 windows系统, ...
- SQL Server游标 C# DataTable.Select() 筛选数据 什么是SQL游标? SQL Server数据类型转换方法 LinQ是什么? SQL Server 分页方法汇总
SQL Server游标 转载自:http://www.cnblogs.com/knowledgesea/p/3699851.html. 什么是游标 结果集,结果集就是select查询之后返回的所 ...
- (六)Net Core项目使用Controller之一 c# log4net 不输出日志 .NET Standard库引用导致的FileNotFoundException探究 获取json串里的某个属性值 common.js 如何调用common.js js 筛选数据 Join 具体用法
(六)Net Core项目使用Controller之一 一.简介 1.当前最流行的开发模式是前后端分离,Controller作为后端的核心输出,是开发人员使用最多的技术点. 2.个人所在的团队已经选择 ...
- .NET LINQ 筛选数据
筛选数据 筛选指将结果集限制为只包含那些满足指定条件的元素的操作. 它又称为选择. 方法 方法名 说明 C# 查询表达式语法 Visual Basic 查询表达式语法 更多信息 OfType ...
- SharePoint 根据时间筛选
最近在整SP列表 老大要求用列表规范周报格式. 提出要在一个视图内查看上周一至周日的内容 翻了下资料想到了以下几种方法 1.在视图页面添加时间筛选器webpart,用参数传入列表筛选 2.在列表添加按 ...
随机推荐
- Docker造化钟神秀
之前闲暇之余有玩过一哈Dokcer容器,但是日子挺久了,然后挺多东西就忘记了,趁着今天有时间重拾一下docker的相关知识. 搜索下载镜像 docker search ubuntu docker pu ...
- Ubuntu 18.04安装配置Apache Ant
Ubuntu 18.04安装配置Apache Ant 文章目录 Ubuntu 18.04安装配置Apache Ant 下载 执行以下命令 `/etc/profile`中配置环境变量 载入配置 测试 执 ...
- windows中Read函数引发数据异常的问题
[摘要] 在Window C/S开发中少不了客户端与服务端数据通信的情况,每当客户端从服务端获取数据时会将数据读到本地本件或缓存中,例如通过CInternetFile类的Read函数会将网卡缓存中的数 ...
- Scrum简介
1. 什么是Scrum Scrum是一种轻量级的框架,适合于小型的.结合紧密的团队开发复杂的产品.Scrum是二十世纪后期一些软件工程师协同努力的脑力劳动的成果,现已成为技术领域最具魅力的方法.但Sc ...
- Beego模板 循环和判断几个例子
Beego模板 循环和判断几个例子 Beego的前端几乎是另一种语言.一些循环.判断,不细看文档真的做不出来. 0. Beego的View模板语法规则: beego前端(view)统一使用了 {{ 和 ...
- Hdu2099 整除的尾数
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2099 Problem Description 一个整数,只知道前几位,不知道末二位,被另一个整数除尽了 ...
- 剑指offer 39. 是否为平衡二叉树
39. 是否为平衡二叉树 题目描述 输入一棵二叉树,判断该二叉树是否是平衡二叉树 任意结点的左右子树高度差不大于1就是平衡二叉树. C++解法 class Solution { public: boo ...
- 机器学习作业(七)非监督学习——Matlab实现
题目下载[传送门] 第1题 简述:实现K-means聚类,并应用到图像压缩上. 第1步:实现kMeansInitCentroids函数,初始化聚类中心: function centroids = kM ...
- navicat 连接报2059错误
原因 navicat不支持mysql新版本的加密规则,mysql8 之前的版本中加密规则是mysql_native_password, mysql8之后,加密规则是caching_sha2_passw ...
- oracle 处理Session不够用
1.执行语句 scope=spfile; scope=spfile; 2.查看现在的链接数 select count(*) from v$process --当前正在使用的 select value ...