2012-11-08 9 views
1

내가 telerik의 gridview에 일하고 그리고 특정 조건 중 하나에 경고를 표시하는 가정은 즉 3, 그때 그것은 만기일이 오늘보다 클 모든 기록을 보여줄 것입니다. 단, 경고 기간에 나타나면 보여줄 것입니다.SQL 날짜 차이 문제

오늘 날짜는 22-12-2012이며, 기한 25-12-2012이며, (3) 다음은 내가 지금까지 뭘하려 그 기록

선택해야하는 일 경고 그렇다면 :

DateTime dtTodayDate = DateTime.Today; 
    string strTodayDate = dtTodayDate.ToString("yyyy/MM/dd 00:00:00"); 
    strFilter += @"OR ([DueDate] >= #" + strTodayDate + @"# AND [Warn_Days] > 0 AND [DueDate] - [Warn_Days] =#" + strTodayDate + @"#)"; 

System.DateTime 및 System.Int32에서 '-'연산을 수행 할 수 없습니다.

+0

데이터가 어디서 오는 지 잘 모르겠지만 그리드에 데이터를 보내기 전에 "경고 날짜"또는 "경고 표시기"필드를 계산하여 필터링 논리를 분석 할 수 있습니다. 조금 더 간단해질 수 있습니다. –

답변

2

잘못된 구분 기호를 사용하고 있습니다. #이 Access에서 사용됩니다. 대신-이 좋은 기회가 당신이 어떤 점에서 모호한 문자열을 전달하고 날짜 값을받지 않습니다 매개 변수화 된 쿼리를 사용한다

strFilter += @"OR ([DueDate] >= '" + strTodayDate + @"' AND [Warn_Days] > 0 AND [DueDate] - [Warn_Days] ='" + strTodayDate + @"')"; 

을하지만 : SQL Server의 경우, 단지 일반 문자열로 날짜를 통과 당신이지고 있다고 생각합니다.

+0

System.DateTime 및 System.Int32에서 '-'연산을 수행 할 수 없습니다. 경고 일은 int입니다. – Developer

+0

@ 개발자가 작동하고 있어야합니다. 실행되는 동안 전체 쿼리를 게시하십시오. – RedFilter