2010-12-22 7 views
0
UPDATE tblCampaigns SET startDate = '4 December, 2010', endDate = '14 January, 2011' WHERE ID = 147 
UPDATE tblCampaigns SET startDate = '24 December, 2010', endDate = '17 Febuary, 2011' WHERE parentID = 147 and campaignName = 'regerg' 

Microsoft OLE DB Provider for SQL Server error '80040e07' 

Syntax error converting datetime from character string. 

/bb/campaignManager/index.asp, line 147 

이 날짜는 2010 년이지만 2011 년이 끝나 자마자 틀린 아이디어가됩니까? 아마도 잘못된 형식 일 것입니다.SQL 서버 날짜 오류

+0

그냥 철자 실수 : 당신이 컨트롤을 유지할 수 있도록하는 대신, 항상 명시 적으로 날짜에 문자열을 캐스팅합니다. 이제 스스로 알아보십시오 ... –

답변

4

그것은 "2월"가 아닌 "월에는"

+0

글쎄, 이건 내 최고 바보 같은 질문, 롤, 덕분에 순위가 –

+0

@ 톰 Gullen : 문제 없어, 우리 모두는 우리의 순간을 가지고 ...;) – sjngm

0

의 내가 그렇게 할 것입니다 : 데이터베이스 변경의 기본 날짜 형식, 다음 scuppered하는 경우.

UPDATE tblCampaigns SET startDate = convert(datetime, '20101204', 112) 

http://msdn.microsoft.com/en-us/library/aa226054(v=SQL.80).aspx

+0

나는 날짜를 삽입 버릇이 있어요. 내 방식은 다른 방식으로 해석 할 수 없기 때문에 미국 데이터베이스에서 실행되는 영국 서버에 스크립트를 작성하면 일/월이 다르게 해석 될 때 큰 골치 거리가됩니다. 이 나쁜 습관인가? –

+1

그게 내 뜻이다. '20101204'가 'yyyymmdd'(스타일 112의 의미)로 해석되어야한다는 데이터베이스를 말하면 데이터베이스는 다른 선택의 여지가 없다. 예를 들어, 독일어 서버에서 스크립트를 실행해야하는 경우 서버가 "Dezember"를 예상하므로 "12 월"오류가 발생합니다. – davek

+2

독일어 시스템을 사용하면 yyyy-mm-dd에 대해 잘 모르는 두통이 있습니다. 그러나 모든 버전의 sqlserver는 다른 설정없이 yyyymmdd를 이해합니다. 즉, '20101204'대신 convert (datetime, '20101204', 112) 을 사용할 필요가 없습니다. –