Sql Server 2008 R2中的Sysutcdatetime是否已被弃用?

时间:2010-07-14 19:32:58

标签: entity-framework sql-server-2008 sql-server-2008-r2

我开发了一个Asp.net应用程序,它使用Entity框架连接到Sql Server 2008(而非R2)数据库。
客户端针对Sql server 2008 R2 数据库运行db脚本并成功执行 执行应用程序时会抛出异常:
“Sysutcdatetime”不被视为内置功能 检查堆栈跟踪后,似乎在执行LINQ to Entity框架语句时抛出异常。声明是这样的:

var item = Entities.News.FirstOrDefault(n => n.ExpirationDate > DateTime.UtcNow);

据我所知,Entity框架生成的sql语句使用函数Sysutcdatetime来获取当前的UTC日期和时间。
我知道其中一个解决方案是将日期存储在变量中,而不是将其传递给lambda表达式,这样就可以在应用程序级别确定UTC日期和时间,并在生成的sql语句中进行硬编码。

var currentUtcDate = DateTime.UtcNow;
var item = Entities.News.FirstOrDefault(n => n.ExpirationDate > currentUtcDate);

但我很好奇为什么Sysutcdatetime函数存在于Sql server 2008中而不存在于Sql server 2008 R2中?

2 个答案:

答案 0 :(得分:2)

select Sysutcdatetime()
select @@VERSION

在我的SQL Server上运行它并将其作为结果

  

2010-07-14 19:36:40.5738642

     

Microsoft SQL Server 2008 R2(RTM) -   10.50.1600.1(Intel X86)2010年4月2日15:53:02版权所有(c)Microsoft   公司开发人员版   Windows NT 5.1(Build 2600:   Service Pack 3)

据我所知,Sysutcdatetime仍然存在于SQL Server 2008 R2上

答案 1 :(得分:0)

思想:

  • 什么是数据库兼容级别?
  • 您是100%是SQL Server 2008 R2还是SQL Server 2008?