내 C#의 윈폼 도구 DateTime
을 사용하고, 나는이 줄을 사용하여 SQL 데이터베이스에 날짜를 저장 해요 :데이터베이스에서 잘못된 날짜로 읽은 날짜가 있습니까?
iDisc.acquirementDate.ToString("yyyy-MM-dd")
SQL 데이터베이스 필드 DATE
유형 인을 때이 날짜가 내가 값을하려는 경우 2013-03-14
, 나는이 줄을 사용하십시오 : 그러나
DateTime acquirementDate = DateTime.ParseExact(iDiscRow[TableNames.Discs.acquirementDate].ToString(), "yyyy-MM-dd", CultureInfo.InvariantCulture);
을하는 FO 이와 같은, 그것의 잘못 보관, 저장 구문 분석중인 문자열이 유효한 DateTime 불만 문자열이 아니기 때문에 rmatException이 위의 행에서 발생합니다.
이 해석되는 값이며이 : 3/14/2013 12:00:00 AM
데이터베이스에 그 2013-03-14
로 저장했을 때, 왜 값이 3/14/2013 12:00:00 AM
으로 읽어 이해하지 않는 무엇?
데이터베이스에서 데이터를 검색하는 데 SqlDataReader
을 사용하고 있습니다. 여기에 코드를 게시 할 수 있지만, 필자는 그 코드를 매우 기본적인 것으로 생각하지 않습니다.
귀하의 날짜가 데이터베이스에 입력 한 날짜의 수 있습니다 샘플 호출입니다,하지만 당신은 날짜 시간으로 검색하는 것입니다. 나는 그것이 당신의 문제의 뿌리라는 것을 모른다. 그러나 당신은 그것을보고 싶을지도 모른다. – Melanie
아니, 그게 그 이유라고 생각하지 않아. 코드를 디버깅하고'iDiscRow' (데이터베이스에서 가져온 데이터베이스 레코드의 값을 저장하는 DataTable 행)에 저장된 값을 보면,'2014 년 3 월 14 일 12:00:00 AM '값이 표시됩니다. 따라서 값은 확실히이 형식의 데이터베이스에서 가져옵니다. – Ahmad
이것은 단순히 'DateTime' 개체의 내부 형식입니다. 이것을 원하는 형식의 문자열로 변환하려면, 저장할 때처럼'.ToString ("yyyy-MM-dd")'를 사용하십시오. 또한, SQL 데이터 타입이'DATE '이기 때문에 그것을 문자열로 읽어 들일 필요가 없습니다. 당신은 그것을'DateTime' 객체로 곧바로 읽을 수 있어야합니다. – JosephHirn