2011-05-12 11 views
0

의 예외는 ('1/1/1753 12:00:00 AM'& '12/31/9999 12:00:00 AM ')과 같이 sp_ad에 기본 날짜 (시작일 & enddate)를 전달합니다. SqlDateTime 오버플로가 발생했습니다.

는 2005 년에 잘 작동했지만, 무엇입니까 "SqlDateTime 오버 플로우를. 1753년 1월 1일 12:00:00 오전 12/31/9999 11시 59 분 59 초시 사이이어야합니다"2008 년

에서 예외

그리고 트위스트는 내가 관리 스튜디오에서 sp를 실행할 때 잘 작동하지만 웹 사이트를 통해 라이브 서버에서는 오류가 발생합니다. 사전에

감사

+0

코드에서 sp를 어떻게 호출합니까? – Arthur

답변

2

이 다른 로케일의 형식으로 날짜를 해석하기 때문에, OS가 설치된 로케일 또는 코드가 실행되고있는 사용자 계정에 링크 된 로케일에 문제가 될 가능성이 높습니다 당신 이 문제를 해결하기 위해 중 하나 DD/MM/YYYY 또는 MM/DD/YYYY

가장 좋은 방법으로 공급하는 것은 표준 날짜 형식을 사용하는 것입니다 - 중 YYYY-MM-DDTHH:MM:SS AM/PMYYYYMMDD HH:MM:SS AM/PM 또는 YYYY-MM-DD HH:MM:SS(24h)

+0

언어가 영국인 경우 표시된 날짜 형식이 안전하지 않습니다. 그것은 공간 대신에 날짜와 시간 사이에'T '가 붙는 것일 것입니다. –

+1

@Damien - 정정 됨 - ODBC 정식과 ISO8601을 혼합했습니다. –

+0

은 라이브 서버 os에서 MM/dd/yyyy로 날짜 형식을 변경했습니다. 여전히 동일한 오류가 발생합니다. – shoab

3

내가 에드 하퍼에 동의하려는 PROB 그 림은 서로 다른 환경 간의 로케일 또는 언어 설정 차이 일 수 있습니다. 나는 그의 고침에 동의하지 않을 것이다.

가능한 한 빨리 날짜 시간 값을 DateTime 변수로 가져 와서 문자열로 처리하지 않습니다. 나는. 웹 사이트에서 그렇게 한 다음 예를 들어 datetime 값을 SQL Server로 마샬링하는 ADO.Net 저장 프로 시저를 업데이트하여 매개 변수를 datetimes로 기대하십시오. 기본적으로 처리 중에 가능한 빨리 문자열로 처리하지 마십시오.

관련 문제