C# LINQ到EF4日期时间比较问题
在比较DBSQLServer2008中的smalldatetime/datetime列值与datetime时出现问题。 我知道数据库中的日期时间格式与运行应用程序的服务器上的日期时间格式不同,所以我做了类似的操作来缓存结果,以便日期时间比较将是本地的,而不是服务器上的:C# LINQ到EF4日期时间比较问题,c#,sql-server-2008,entity-framework,C#,Sql Server 2008,Entity Framework,在比较DBSQLServer2008中的smalldatetime/datetime列值与datetime时出现问题。 我知道数据库中的日期时间格式与运行应用程序的服务器上的日期时间格式不同,所以我做了类似的操作来缓存结果,以便日期时间比较将是本地的,而不是服务器上的: var inactiveAccounts = (from entry in ent.Accounts where entry.Status == 0
var inactiveAccounts = (from entry in ent.Accounts
where entry.Status == 0
select entry).ToArray();
var accountsFiltered = (from entry in inactiveAccounts
where entry.DeactivationDate < DateTime.Now
select entry).ToArray();
在某一天的某个时刻,我没有得到正确的记录
我怀疑这是由于where entry.DeactivationDate
您可以直接使用它:
var inactiveAccounts = (from entry in ent.Accounts
where entry.Status == 0 && entry.DeactivationDate < DateTime.Now
select entry).ToArray();
因为DataTime.Now和DateTime.UtcNow被转换为=它们不应该在.NET端进行计算,而是分别转换为etdate或GETUTCDATE SQL函数调用
您的问题的其余部分无法回答,因为提供以下信息
在一天中的某个时候,我没有得到正确的记录
如果你想得到问题的答案,包括哪些时段导致问题,使用了哪些时区等,你必须花更大的精力分析问题。通常我们不会帮你,因为我们看不到你的数据。这也不是EF的问题,因为在您的例子中,它完全发生在linq to object=plain.NET代码中。BTW:很少有用例使用DateTime.Now是存储在数据库中或与数据库中的值进行比较的正确值。在几乎所有情况下,您都应该使用DateTime.UtcNow来避免夏令时更改期间出现问题,因为时间可能会倒退!不,我也要比较时间,在这个例子中是DateTime。现在一直调用不是问题,因为几乎没有记录,即使所有时间都是DateTime。现在是新日期,这不是问题。。。还有其他想法吗?这对我来说真的很奇怪,因为当我打印出值时,一切似乎都很正常。它发生在19:30到08:00之间。本地时间格式为h:mm:ss tt,日期格式为M/d/yyyy。。。让我知道哪些附加数据可能有用
var inactiveAccounts = (from entry in ent.Accounts
where entry.Status == 0 && entry.DeactivationDate < DateTime.Now
select entry).ToArray();