【问题标题】:Comparison of Date From SQL Server and C# DateTimeSQL Server 和 C# DateTime 中的日期比较
【发布时间】:2021-01-19 01:56:48
【问题描述】:

我在 SQL Server 数据库中有一个 DateTime 列。数据存储如下:

2020-10-04 23:45:00.527

我尝试将如下日期与当前日期进行比较(数据库中的日期应小于当前日期)

 DateTime today = DateTime.Now.Date;

 var result = (from c in TableName
               where (c.Email == email) && 
                     c.Password == password && c.Status == 1 && 
                     c.ValidTill.Date <= today
               select c).ToList();

但不幸的是我得到了这个异常

LINQ to Entities 不支持“日期”。仅支持初始化器、实体成员和实体导航属性

即使尝试了以下方法,似乎也不起作用:

DbFunctions.TruncateTime(c.ValidTill)

我的比较是这样的-

2020-10-04 23:45:00 (Datetime in database) <= 2020-10-10 23:00:00 (current date & time)

【问题讨论】:

  • 你可以先var tomorrow = DateTime.Today.AddDays(1),然后c.ValidTill &lt; tomorrow,这样可以确保日期在明天之前。

标签: c# linq sql-server-2008


【解决方案1】:

你不需要.Date

    c.ValidTill <= today

或仅与日期比较

    EntityFunctions.TruncateTime(x.ValidTill) <= today.Date

需要做这项工作。

【讨论】:

  • 由于没有完成格式化,比较是否有效?
【解决方案2】:
 var today = DateTime.Now;
 var result = (from c in TableName
               where (c.Email == email) && 
                     c.Password == password && c.Status == 1 && 
                     c.ValidTill <= today
               select c).ToList();

hope it will work.

【讨论】:

  • 在你的情况下,今天仍然是 DateTime 类型,它会导致同样的异常。
猜你喜欢
  • 1970-01-01
  • 2018-04-07
  • 1970-01-01
  • 1970-01-01
  • 2013-04-09
  • 2021-11-03
  • 1970-01-01
  • 2010-12-04
  • 1970-01-01
相关资源
最近更新 更多