比较 Entity Framework 中的日期时间
Compare DateTimes in Entity Framework
我正在尝试这样做,但它不起作用,它 returns 空结果:
if (inputDate != null)
{
dataContext.myTable
.Where(r => r.myDate.HasValue &&
r.myDate.Value.Day == inputDate.Value.Day)
}
我想比较两个可为 null 的 DateTime
值,我只想从属于某个 Date
的数据库中检索 DateTime
个值。为了简化这个问题,我首先尝试只比较它们的 Day
值。
请不要标记为重复,我正在使用 EF5,所以我没有 DbFunctions.TruncateTime()
功能。
如您所说,Entity Framework 会抛出错误。您拥有的最佳选择是使用条件介于一天的第一秒和一天的最后一秒之间的查询。
if(inputDate != null)
{
/* Assuming inputDate.Value only contains the Date part.
i.e. : 2017-05-23 instead of 2017-05-23 10:00:32 */
DateTime inputDateFirstSecond = inputDate.Value;
DateTime inputDateLastSecond = inputDateFirstSecond
.AddHours(23)
.AddMinutes(59)
.AddSeconds(59);
dataContext.myTable.Where(r => r.myDate.HasValue &&
(r.myDate.Value >= inputDateFirstSecond && r.myDate.Value <= inputDateLastSecond)
)
}
SQL 服务器有一些 Entity Framework 扩展可以让您使用日期时间部分,但如果您将来更改数据库引擎,它们将无法工作。
我正在尝试这样做,但它不起作用,它 returns 空结果:
if (inputDate != null)
{
dataContext.myTable
.Where(r => r.myDate.HasValue &&
r.myDate.Value.Day == inputDate.Value.Day)
}
我想比较两个可为 null 的 DateTime
值,我只想从属于某个 Date
的数据库中检索 DateTime
个值。为了简化这个问题,我首先尝试只比较它们的 Day
值。
请不要标记为重复,我正在使用 EF5,所以我没有 DbFunctions.TruncateTime()
功能。
如您所说,Entity Framework 会抛出错误。您拥有的最佳选择是使用条件介于一天的第一秒和一天的最后一秒之间的查询。
if(inputDate != null)
{
/* Assuming inputDate.Value only contains the Date part.
i.e. : 2017-05-23 instead of 2017-05-23 10:00:32 */
DateTime inputDateFirstSecond = inputDate.Value;
DateTime inputDateLastSecond = inputDateFirstSecond
.AddHours(23)
.AddMinutes(59)
.AddSeconds(59);
dataContext.myTable.Where(r => r.myDate.HasValue &&
(r.myDate.Value >= inputDateFirstSecond && r.myDate.Value <= inputDateLastSecond)
)
}
SQL 服务器有一些 Entity Framework 扩展可以让您使用日期时间部分,但如果您将来更改数据库引擎,它们将无法工作。