繁体   English   中英

如何使用 Linq c# 从 SQL Server 数据库中获取短日期时间并与 DateTime.Now 进行比较

[英]How to get a short DateTime from SQL Server database and compare with DateTime.Now using Linq c#

我的表中有一栏datesdate数据类型的shortDate格式“2018年2月12日”。

现在我希望使用 C# 中的 Linq 查询来检索日期。

这是我在 SQL Server 上运行的查询,它返回一些行:

select * 
from tbl_Attendance 
where Dates = '2018/2/12'

但是,如果我尝试运行这些查询,它会返回 null 或“方法无法转换为存储表达式”错误。

只有以下查询返回了正确的 ID 但不正确的日期。

var q = (from a in context.tbl_Attendance
         where a.ID.Value.CompareTo(Iden) < 0 && a.Dates.Value.CompareTo(DateTime.Now) < 0
         select a).FirstOrDefault();

和:

var q = (from a in context.tbl_Attendance
         where a.Dates == DateTime.Now
         select a).FirstOrDefault();

和:

var q = (from a in context.tbl_Attendance
         where a.Dates.Value.ToShortDateString() == DateTime.Now.ToShortDateString()                                               
         select a).FirstOrDefault();

最后我也尝试过:

attendance = context.tbl_Attendance.Where(d => d.ID == row.xID && d.Dates == DateTime.Now).FirstOrDefault();
  1. 如果要将某个日期与另一个日期进行比较,则不必使用DateTime.Now因为它还会比较时间部分。 请改用DateTime.Today

  2. 错误

方法无法转换为 store 表达式

出现是因为DateTime.Now.ToShortDateString()CompareTo()无法转换为 SQL 查询。

我的建议:首先声明一个变量,然后为它赋值,然后在第二步查询你的数据库。

代码:

DateTime myDate = DateTime.Today; // or DateTime.Parse("2018/2/12")
var result = (from a in context.tbl_Attendance
         where a.Dates == myDate 
         select a).FirstOrDefault();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM