如何使用LinqToSql查询特定日期时间

时间:2016-02-02 01:06:50

标签: c# datetime linq-to-sql

使用Linq2Sql在特定日期时间查询数据库时,查询始终返回,但没有结果。我怀疑时间是以纳秒为单位导致差异。时间必须相等但不相等。如何在数据库中查询日期时间,直到精确度为秒?

以下代码有效,但它完全排除了时间部分:

JTable

还尝试了这段代码(并不是很好),但编译器抱怨在一个linq查询中有Date。

        var Foos = Bars
                .Where(x =>
                    DbFunctions.TruncateTime(x.EndDate) == DbFunctions.TruncateTime(endDate))
                .Select(x => x.Id);

也尝试了这个,但查询总是空回来。可能ToString()在Linq查询中不起作用。

        var Foo = Bars
                .Where(x => 
                        x.EndDate.Value.Date == endDate.Value.Date &&
                        x.EndDate.Value.Hour == endDate.Value.Hour &&
                        x.EndDate.Value.Minute == endDate.Value.Minute &&
                        x.EndDate.Value.Second == endDate.Value.Second)
                .Select(x => x.Id);

2 个答案:

答案 0 :(得分:1)

您可以使用DiffSeconds方法,如下所示:

var Foo = Bars
       .Where(x => DbFunctions.DiffSeconds(x.EndDate, endDate) == 0)
       .Select(x => x.Id);

答案 1 :(得分:0)

一种方法是分别比较日期部分和小时部分。而不是试图施放,让分而治之

假设您将数据存储在DB中,如下所示

Pickup Time :10/9/2015 12:53:15 AM

如果您想比较它目前的系统时间长达数小时,则以下查询有效

 orddb.order.Where(x.PickupDate.Hour >= DateTime.Today.Hour 
                    && x.PickupDate >= DateTime.Today)