2012-08-12 13 views
0

나는 일을 시작한 지 3 개월이 지 여부에 관계없이 일하는 직원의 달을 테스트하려고했습니다. 그리고 이것은 내가 사용하려고 무엇 :startIndex는 C에서 문자열의 길이보다 클 수 없습니다. #

int totalMonth = 3; 
int totalYear = 0; 
int mon = DateTime.Now.Month; 
int yr = DateTime.Now.Year; 
//block of code that I used LinQ to Entity to get staff start work date 
result = result.Where(((s => mon - int.Parse(s.StartDate.Substring(3, 2).ToString()) == totalMonth && yr -int.Parse(s.StartDate.Substring(6, 4).ToString()) == totalYear))).ToList(); 

내 데이터베이스에서 날짜의 형식은 07/05/2012이다 그러나 나는 오류 가지고 :

startIndex cannot be larger than length of string. Parameter name: startIndex 

이 하나가 말해 줄 수 잘못 여기에 내가 무엇을했는지를 ? 고맙습니다.

+1

코드는 result라는 변수에서 작동합니다. 그러나 우리는 유형이나 그것의 현재 가치를 보지 못합니다. 이걸 좀 더 자세히 설명해 주시겠습니까? – Steve

답변

1

내 데이터베이스에서 날짜의 형식은 대부분의 경우 날짜가 바이너리로 저장됩니다 2012년 7월 5일

이며 어떤 형식이 없습니다. 레코드를 나열 할 때 C#에서 일어나는 것과 다를 수 있습니다.

디버거를 사용하여 result.First().StartDate이 실제로 어떻게 보이는지 확인하십시오. "5-7-12" 일 수 있습니다.

+0

그러나 데이터 타입은'date'가 아닌'varchar (50)'입니다. – Nothing

+1

그리고 NULL 날짜를 허용합니까? 적어도 하나의 레코드에 6 문자 미만이 있기 때문입니다. –

+1

@ socheata 그것이 근본적인 문제입니다. 날짜는 문자열이 아닌 날짜로 저장해야합니다. –

관련 문제