使用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);
答案 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)