2010-04-29 4 views

답변

27

나는 C#을 사용한다고 가정합니다.

종료 날짜에
DateTime startDate=bla; 
DateTime endDate=blabla; 
using(var db=new MyDataContext()) 
{ 
    var filteredData=db.TABLE.Where(t => t.DATE > startDate && t.DATE < endDate); 
    //... 
} 
+9

'BETWEEN'과 같은 결과를 내기 위해서는'> ='와'<='를 사용하십시오. –

+0

정확히 이런 이유로 BETWEEN을 사용하지 않습니다. 나는 다른 형태의 설명을 선호한다. – spender

+0

나에게 이것은 LINQ to Entity 오류가 발생하지 않았습니다. 나는 또한 DBContext를 사용하고있다. –

5

당신이 시작 날짜에 포함되고 싶어하지만, 독점 . 이는 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와 정확히 일치하는 레코드는 제외합니다.

관련 문제