Tengo un ejemplo en SQL sobre cómo usar la misma lógica en Linq para Entity?¿Cómo buscar entre dos fechas en LINQ to Entity?
SELECT * FROM TABLE WHERE DATE BETWEEN STARTDATE AND ENDDATE
Tengo un ejemplo en SQL sobre cómo usar la misma lógica en Linq para Entity?¿Cómo buscar entre dos fechas en LINQ to Entity?
SELECT * FROM TABLE WHERE DATE BETWEEN STARTDATE AND ENDDATE
Estoy asumiendo C#.
DateTime startDate=bla;
DateTime endDate=blabla;
using(var db=new MyDataContext())
{
var filteredData=db.TABLE.Where(t => t.DATE > startDate && t.DATE < endDate);
//...
}
Usted quiere que sea incluido en la fecha de inicio, pero exclusiva en la fecha de finalización. Esto se debe a que el DateTime
utilizado como fecha es realmente el comienzo de ese día y no se extiende hasta el final del día.
// dates that are inclusive on the date range
var startDate = new DateTime(2016, 1, 1);
var endDate = new DateTime(2016, 12, 31);
...
// WRONG: this will ignore data on the last day
.Where(obj => obj.StartDate >= startDate && obj.EndDate <= endDate)
// RIGHT: this will include the last day
var endDateExclusive = endDate.AddDays(1);
...
.Where(obj => obj.StartDate >= startDate && obj.EndDate < endDateExclusive)
Incluso si está utilizando DateTime
valores específicos, que todavía puede ser importante utilizar >=
<
y, en lugar de >=
y <=
o >
y <
.
Si usó ambos signos "o iguales", entonces dos rangos de fechas de X a Y y de Y a Z incluirían registros que coinciden exactamente con Y. Dependiendo de sus requisitos, podría ser un error grave incluir el registro en ambos intervalos de fechas. Del mismo modo, si usa >
y <
, excluirá los registros que coincidan exactamente con Y de ambos intervalos de fechas.
Sin embargo, use '> =' y '<=' para obtener los mismos resultados que 'BETWEEN'. –
Nunca uso BETWEEN por exactamente esta razón. Prefiero lo explícito de la otra forma. – spender
Para mí esto no funcionó tiene un error de LINQ to Entity. También estoy usando DBContext –