Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用SQL';是否在Linq to SQL表达式中包含s GETDATE()和DATEADD()?_Sql_Linq To Sql - Fatal编程技术网

如何使用SQL';是否在Linq to SQL表达式中包含s GETDATE()和DATEADD()?

如何使用SQL';是否在Linq to SQL表达式中包含s GETDATE()和DATEADD()?,sql,linq-to-sql,Sql,Linq To Sql,如果我有一个LinqtoSQL表达式,如下所示: from subscription in dbContext.Subscriptions where subscription.Expires > DateTime.Now select subscription public partial class YourDataContext { public DateTime GetDate() { return ExecuteQuery<DateTime>(

如果我有一个
Linq
to
SQL
表达式,如下所示:

  from subscription in dbContext.Subscriptions
 where subscription.Expires > DateTime.Now
select subscription
public partial class YourDataContext
{
  public DateTime GetDate()
  {
    return ExecuteQuery<DateTime>("SELECT GETDATE()").First();
  }
}
我希望它使用SQL Server的
GETDATE()
函数,而不是机器运行
C
程序的时间

下一个问题是如何翻译:

DateTime.Now.AddDays(2)
为此:

DATEADD(dd, 2, GETDATE())

您可以使用ExecuteQuery获得对sql的完全控制


我知道,与ADO.NET相比,它似乎没有什么好处(或者相反)。

如果您不介意在每次使用前查询数据库,我建议您采取以下解决方法:在一个位置使用ExecuteQuery,在数据上下文中获取日期,如下所示:

  from subscription in dbContext.Subscriptions
 where subscription.Expires > DateTime.Now
select subscription
public partial class YourDataContext
{
  public DateTime GetDate()
  {
    return ExecuteQuery<DateTime>("SELECT GETDATE()").First();
  }
}
尝试:

编辑:这需要是DataContext类的一部分

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

。。。那么它不是LINQ表达式;-)true:)但是如果linq2sql被认为是sql的抽象,那么首先就不能使用sql函数了注意:这将直接转换为GETDATE()函数,例如,不单独调用SQL Server。刚刚验证过,天才!很好的解决方案,非常受欢迎。MethodInfo是System.Reflection.MethodInfo,Function是System.Data.Linq.Mapping.Function我不知道date diff方法如何取代DATEADD()。DATEADD()根据指定的差异返回日期,但System.Data.Linq.SqlClient命名空间中列出的date diff方法仅返回日期之间的差异,在本例中,用户已经知道这些差异。