Linq中比较日期大小(部分比较)

本文深入探讨了在 SQL Server 中比较时间数据年月日部分的方法,包括转换为字符串和 DateTime 类型进行比较的挑战与解决方案,以及如何利用 SQL 语句直接比较日期。同时提供了在本月内和当月内的日期筛选技巧。

 

 

问题:Linq中比较两个时间的年月日部分

表中某个字段的时间和系统时间比较大小(只比较年月日)

 

思路一:转换成字符串比较

              var queryable = dbContext.Table
                    .Where(p => p.ETime.ToString("yyyy-MM-dd") >= DateTime.Now.ToString("yyyy-MM-dd") 

异常:字符串无法比较

 

思路二:先转换成字符串,再转换成DataTime比较

       var queryable = dbContext.Table
                    .Where(p => Convert.ToDateTime(p.ETime.ToString("yyyy-MM-dd"))
                        >= Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd")) 

异常:调用ToDateTime方法失败

 

思路三:当前时间和系统时间(系统时间转换成仅包含年月日)

  DateTime dtToday = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd"));
                  var queryable = dbContext.Table
                    .Where(p => p.ETime >= dtToday) 

  

 

Sqlserver中按日期的年月日比较:

CONVERT(varchar(12),v.ETime,112)>=CONVERT(varchar(12),GETDATE(),112)

http://blog.csdn.net/quxiao2002/article/details/7360542

 

本月内+今天

private DateTime dtMonthFirstday = Convert.ToDateTime(new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1).ToString("yyyy-MM-dd"));
private DateTime dtToday = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd"));
private DateTime dtNexDay = Convert.ToDateTime(DateTime.Now.AddDays(1).ToString("yyyy-MM-dd"));

--今天

Where(p => p.Created >= dtToday && p.Created < dtNexDay).Count();

 

当月

Where(p => p.Created >= dtMonthFirstday).Count();

转载于:https://www.cnblogs.com/gossip/p/4520025.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值