나는 Linq에서 Entity에 동일한 논리를 사용하는 방법을 SQL에 예제가 있습니까?LINQ to Entity에서 두 날짜를 검색하는 방법은 무엇입니까?
SELECT * FROM TABLE WHERE DATE BETWEEN STARTDATE AND ENDDATE
나는 Linq에서 Entity에 동일한 논리를 사용하는 방법을 SQL에 예제가 있습니까?LINQ to Entity에서 두 날짜를 검색하는 방법은 무엇입니까?
SELECT * FROM TABLE WHERE DATE BETWEEN STARTDATE AND ENDDATE
나는 C#을 사용한다고 가정합니다.
종료 날짜에DateTime startDate=bla;
DateTime endDate=blabla;
using(var db=new MyDataContext())
{
var filteredData=db.TABLE.Where(t => t.DATE > startDate && t.DATE < endDate);
//...
}
당신이 시작 날짜에 포함되고 싶어하지만, 독점 . 이는 DateTime
이 날짜로 사용 된 것이 실제로 그날의 시작일 뿐이므로 그날의 끝까지 확장되지 않기 때문입니다. 특정 DateTime
값을 사용하는 경우에도 >=
및 <
보다는 >=
및 <=
또는 >
및 <
를 사용하는
// 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)
은 여전히 중요 할 수있다.
"동일"기호를 모두 사용하면 X와 Y, Y에서 Z까지 두 개의 날짜 범위에 모두 Y와 정확하게 일치하는 레코드가 포함됩니다. 요구 사항에 따라 레코드를 포함하는 심각한 결함이 될 수 있습니다 두 기간 모두 마찬가지로 >
및 <
을 사용하는 경우 두 날짜 범위의 Y와 정확히 일치하는 레코드는 제외합니다.
'BETWEEN'과 같은 결과를 내기 위해서는'> ='와'<='를 사용하십시오. –
정확히 이런 이유로 BETWEEN을 사용하지 않습니다. 나는 다른 형태의 설명을 선호한다. – spender
나에게 이것은 LINQ to Entity 오류가 발생하지 않았습니다. 나는 또한 DBContext를 사용하고있다. –