sql - 如何在 Linq to SQL 表达式中使用 SQL GETDATE() 和 DATEADD()?

标签 sql linq-to-sql

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

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

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

下一个问题是如何翻译:
DateTime.Now.AddDays(2)

对此:
DATEADD(dd, 2, GETDATE())

最佳答案

试试 this :

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

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

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

关于sql - 如何在 Linq to SQL 表达式中使用 SQL GETDATE() 和 DATEADD()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/200617/

相关文章:

c# - linq-to-sql "Cannot remove an entity that has not been attached"

c# - Linq2SQL : Always get . Sum() 返回 0 而不是 null

c# - hibernate查询使用nolock时出现识别错误

mysql - 如何更新二进制数的一位作为切换?

sql - 如何使表的属性成为该表中的外键?

php - 使用连接更新 sql

c# - 架构问题 - 一个中央数据库和访问它的许多不同程序

linq-to-sql - LINQ 关系(亟待解决的问题)

c# - 从 C# 中的 LINQ 中提取 SQL 列扩展属性

c# - LINQ 选择带有 DISTINCT 的列表列表