2009-12-08 7 views
4

내 기준 문자열이며, DataTable.Select을 사용하여 날짜 범위에 데이터 테이블을 필터링하고 있습니다 :DataTable.Select 날짜 형식 문제

"CreatedOn >='03/11/2009 00:00:00' AND CreatedOn <='03/11/2009 23:59:00'" 

이 필터를 반환 내가 행을 일치 볼 수 있지만 더 행 (필터링되지 않은 데이터 테이블). 그러나 기준을 변경하면 (일/월 전 환 참고) :

"CreatedOn >='11/03/2009 00:00:00' AND CreatedOn <='11/03/2009 23:59:00'" 

데이터 테이블 필터가 예상대로 표시됩니다. 분명히 이것이 날짜 현지화 문제 인 것 같습니다.이 문제를 피하기 위해 날짜 형식을 지정하는 쉬운 방법이 있습니까?

답변

7

사용 (11월 3일에 대한)과 같은 표준 ISO 형식의 날짜 : 당신이 11월 3일에 생성 된 모든 레코드를 원하는 경우

"CreatedOn >='2009-11-03 00:00:00' AND CreatedOn <='2009-11-03 23:59:00'" 

사실, 당신은 정말 당신은 또한에서 만든 기록을 원하는대로이 작업을 수행해야 그 막판 예. 23시 59분 30초 :

"CreatedOn >='2009-11-03' AND CreatedOn < '2009-11-04'" 

빠른 참조 here

+0

완벽한, 감사합니다. – Simon

2

당신이 날짜를 포맷 할 수 있는지 확인에게있어 오히려 "MM/DD/YYYY"가 아닌 "DD MMM 일"에. 이

dt.Select(String.Format("col >= '{0}'", new DateTime(2008, 12, 11).ToString("dd MMM yyyy"))) 
7

같은

일이 시도 :

string selectString = String.Format("CreatedOn >= '{0}' AND CreatedOn <= '{1}'", 
          startDate.ToString(DateTimeFormatInfo.InvariantInfo), 
          endDate.ToString(DateTimeFormatInfo.InvariantInfo)); 
dt.Select(selectString);