如何在 Linq to SQL 表达式中使用 SQL 的 GETDATE() 和 DATEADD()? [英] How do I use SQL's GETDATE() and DATEADD() in a Linq to SQL expression?

查看:22
本文介绍了如何在 Linq to SQL 表达式中使用 SQL 的 GETDATE() 和 DATEADD()?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如果我有一个像这样的 LinqSQL 表达式:

If I have a Linq to SQL expression like this:

  from subscription in dbContext.Subscriptions
 where subscription.Expires > DateTime.Now
select subscription

我希望它使用 SQL Servers GETDATE() 函数而不是运行 C# 程序的机器的时间.

I want this to to use the SQL Servers GETDATE() function instead of the time of the machine running the C# program.

下一个问题是如何翻译:

The next question would be how to translate this:

DateTime.Now.AddDays(2)

为此:

DATEADD(dd, 2, GETDATE())

推荐答案

尝试 这个:

[Function(Name="GetDate", IsComposable=true)] 
 public DateTime GetSystemDate() 
 {   
    MethodInfo mi = MethodBase.GetCurrentMethod() as MethodInfo;   
    return (DateTime)this.ExecuteMethodCall(this, mi, new object[]{}).ReturnValue; 
 }

编辑:这需要成为您的 DataContext 类的一部分.

EDIT: this needs to be a part of your DataContext class.

现在您可以在查询中使用 GetSystemDate() 而不是 DateTime.Now.至于日期差异,请查看 System.Data.Linq.SqlClient 命名空间,尤其是 SqlMethods 类的 DayDiffXXX 函数.

Now you can use GetSystemDate() instead of DateTime.Now in your queries. As for date differences take a look at System.Data.Linq.SqlClient namespace, especially DayDiffXXX functions of SqlMethods class.

这篇关于如何在 Linq to SQL 表达式中使用 SQL 的 GETDATE() 和 DATEADD()?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆