【问题标题】:How to get a short DateTime from SQL Server database and compare with DateTime.Now using Linq c#如何从 SQL Server 数据库中获取短 DateTime 并与 DateTime.Now 使用 Linq c# 进行比较
【发布时间】:2018-02-13 10:02:33
【问题描述】:

我的表格有一列 datesdate 数据类型,短日期格式为“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();

【问题讨论】:

标签: c# linq datetime linq-to-entities


【解决方案1】:
  1. 如果你想比较一个日期和另一个日期,你不必使用DateTime.Now,因为它也比较时间部分。请改用DateTime.Today

  2. 错误

方法不能被翻译成存储表达式

出现是因为 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();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-04
    • 1970-01-01
    • 2021-11-25
    • 2019-08-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多