如何使用 LinqToSql 查询特定日期时间
How do I use LinqToSql to query on specific datetime
在特定日期时间使用 Linq2Sql 查询数据库时,查询总是没有结果。我怀疑时间差了纳秒导致了差异。时间必须相等但不相等。如何查询数据库的日期时间,精确到秒?
以下代码有效,但它完全排除了时间部分:
var Foos = Bars
.Where(x =>
DbFunctions.TruncateTime(x.EndDate) == DbFunctions.TruncateTime(endDate))
.Select(x => x.Id);
也试过这段代码(不是很漂亮)但是编译器抱怨在 linq 查询中包含 Date。
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);
也试过了,但查询总是空的。可能 ToString() 在 Linq 查询中不起作用。
var foo = bars.Where(x => x.EndDate.ToString() == endDate.ToString())
您可以像这样使用 DiffSeconds
方法:
var Foo = Bars
.Where(x => DbFunctions.DiffSeconds(x.EndDate, endDate) == 0)
.Select(x => x.Id);
解决方法是分别比较日期部分和小时部分。与其尝试施法,不如分而治之
假设您将数据存储在数据库中,如下所示
Pickup Time :10/9/2015 12:53:15 AM
如果你想比较它当前的系统时间长达几个小时,下面的查询有效
orddb.order.Where(x.PickupDate.Hour >= DateTime.Today.Hour
&& x.PickupDate >= DateTime.Today)
在特定日期时间使用 Linq2Sql 查询数据库时,查询总是没有结果。我怀疑时间差了纳秒导致了差异。时间必须相等但不相等。如何查询数据库的日期时间,精确到秒?
以下代码有效,但它完全排除了时间部分:
var Foos = Bars
.Where(x =>
DbFunctions.TruncateTime(x.EndDate) == DbFunctions.TruncateTime(endDate))
.Select(x => x.Id);
也试过这段代码(不是很漂亮)但是编译器抱怨在 linq 查询中包含 Date。
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);
也试过了,但查询总是空的。可能 ToString() 在 Linq 查询中不起作用。
var foo = bars.Where(x => x.EndDate.ToString() == endDate.ToString())
您可以像这样使用 DiffSeconds
方法:
var Foo = Bars
.Where(x => DbFunctions.DiffSeconds(x.EndDate, endDate) == 0)
.Select(x => x.Id);
解决方法是分别比较日期部分和小时部分。与其尝试施法,不如分而治之
假设您将数据存储在数据库中,如下所示
Pickup Time :10/9/2015 12:53:15 AM
如果你想比较它当前的系统时间长达几个小时,下面的查询有效
orddb.order.Where(x.PickupDate.Hour >= DateTime.Today.Hour
&& x.PickupDate >= DateTime.Today)