2012-05-23 3 views
-1

내가 일/월/년을 포맷하지만 불행히도 그 순간에 내 SQL이 포함 된 삽입날짜 시간 삽입 변환 도움이

에서 VARCHAR 데이터의 변환을 다음과 같은 오류를 던지고 날짜를 삽입해야 할 필요 유형을 datetime 데이터 유형으로 변경하면 범위를 벗어나는 값이 발생합니다. 명세서가 종료되었습니다.

데이터베이스가 잘못된 날짜 형식을 찾고 있기 때문입니다. 누구든지 내가 데이터베이스를 DD 형식/mm/yyyy를 찾는 방법에 대한 해결책을 알려줄 수 있습니까? 한 번에 수천 개의 삽입이 이루어지기 때문에 코드의 모든 단일 날짜를 변환하지 않도록하십시오. 감사합니다

+0

날짜를 삽입하는 방법? ToString() 작동 방식을 수정해야합니까? –

답변

4

나는

이 수행 일/월/년이되지 특정 형식에 대한 생각 포맷 된 날짜를 삽입해야합니다. 날짜와 시간은 기본적으로 개의 형식이 없습니다. 데이터베이스 필드가 날짜/시간 관련 유형인지 확인한 다음 DateTime 또는 DateTimeOffset 값을 지정하는 매개 변수화 된 SQL을 사용하십시오. 그런 식으로 코드는 문자열을 전혀 처리하지 않습니다..

varchar에서 오류가 발생한다는 사실은 문자열로 데이터를 제공하고 있음을 나타냅니다. 당신은 그렇게해서는 안됩니다. 입력 형식이 텍스트 인 경우에도 가능한 한 빨리 자연스러운 데이터 유형 (예 : DateTimeOffset)으로 변환해야합니다. 코드베이스 전체에서 데이터로 작업하는 것이 훨씬 쉬울 것입니다.

1

convert을 사용하고 스타일을 103으로 지정할 수 있습니다.

convert(datetime, YourColumn, 103) 

또는 set the date format 일 수 있습니다.

set dateformat dmy 
1

날짜 리터럴은 항상 안전하고 모호하지 않으며 언어 중립적 인 형식이어야합니다. 그래서 임베디드 SQL은 다음과 같아야합니다

INSERT dbo.table(column) VALUES('YYYYMMDD'); 

쉽게 문자열을 ToString()를 사용하여 C#에서이 방법을 포맷 할 수 있습니다.

하지만 매개 변수화 된 명령문을 사용하고 적절한 datetime 매개 변수를 전달하고 문자열 형식화에 대해 걱정하지 않아야합니다.