one - ¿Cómo uso SQL''s GETDATE() y DATEADD() en una expresión Linq to SQL?
mssql dateadd example (3)
Prueba this :
[Function(Name="GetDate", IsComposable=true)]
public DateTime GetSystemDate()
{
MethodInfo mi = MethodBase.GetCurrentMethod() as MethodInfo;
return (DateTime)this.ExecuteMethodCall(this, mi, new object[]{}).ReturnValue;
}
EDITAR : esto debe ser parte de tu clase DataContext.
Ahora puede usar GetSystemDate () en lugar de DateTime.Now en sus consultas. En cuanto a las diferencias de fecha, eche un vistazo al espacio de nombres System.Data.Linq.SqlClient, especialmente las funciones DayDiffXXX de la clase SqlMethods.
Si tengo una expresión de Linq
a SQL
como esta:
from subscription in dbContext.Subscriptions
where subscription.Expires > DateTime.Now
select subscription
Quiero que esto use la función GETDATE()
SQL Servers en lugar de la hora de la máquina que ejecuta el programa C#
.
La siguiente pregunta sería cómo traducir esto:
DateTime.Now.AddDays(2)
a esto:
DATEADD(dd, 2, GETDATE())
Puede usar ExecuteQuery para obtener el control total de sql http://weblogs.asp.net/scottgu/archive/2007/08/27/linq-to-sql-part-8-executing-custom-sql-expressions.aspx
Sé que parece muy poca ganancia (o tal vez en la contrairy) sobre ADO.NET sin embargo.
Si no le importa consultar la base de datos antes de cada uso, sugeriría la siguiente solución: use ExecuteQuery en un lugar para obtener la fecha en el contexto de datos de esta manera:
public partial class YourDataContext
{
public DateTime GetDate()
{
return ExecuteQuery<DateTime>("SELECT GETDATE()").First();
}
}
y luego puedes escribir
from subscription in dbContext.Subscriptions
where subscription > dbContext.GetDate().AddDays(2)
select subscription