2009-09-18 2 views
3

나는 여기에 대해 매우 실망하고 있습니다 ... 독일 사용자은 SQL Server에 저장해야하는 날짜를 입력 할 수 있습니다. 날짜는 "dd.mm.yyyy"형식입니다. 나는 항상 다음과 같은 오류 메시지를 받는다 : 질의 표현식 '# 23.01.2004 00 : 07 : 00 #'에서 날짜의 구문 오류. - 지금 Access를 사용하십시오.VBA를 사용하여 SQL에 독일어 날짜 형식 넣기

나는 방법 (Thread.CultureInfo,에서는 CDate(), 포맷 DateTimeStyles)을 많이 시도했지만 여기 내 최신했습니다 또한 나에게 오류를 제공

Dim dTermin As DateTime 
dTermin = DateTime.Parse(txtTermin.Text) 

sSQL = "INSERT INTO Termin (Termin) VALUES (" 
sSQL = sSQL & "#" & dTermin & "#)" 

. "10-04-2004"와 같은 날짜를 하드 코딩하면 작동합니다. Access 2000 db이고 ID (Autonumber)와 Termin (ShortDate)의 두 필드가 있습니다. Jet OLEDB 4.0 공급자 사용. 만약 내가 제대로 이해하고 SQL Server가 기본 us_enlish 로케일이있는 경우

+0

액세스 또는 SQL Server에서 날짜를 인식하도록 하시겠습니까? 그것은 명확하지 않다 – gbn

+1

죄송합니다, Access에서 SQL Server에 테이블을 연결 한 Access 데이터베이스가 있습니다. – pinku

+1

@Mitch : yyyy/mm/dd는 ISO가 아닙니다. – gbn

답변

4

당신은 데이터베이스에서 지역화 된 날짜를 저장하지 않아야합니다. standard format에 저장 한 다음 ODBC 커넥터 또는 SQL 클라이언트 또는 사용중인 모든 사용자에게 표시하려는 사람의 문화에 따라 현지화하십시오.

+0

링크가 정확히 필요한 것입니다! 정말 고마워! – pinku

2

는 SQL Server 날짜 구분 기호는, '예 .03.2009 '23'

그런 다음 당신은 2 문제가 있습니다.

SET LANGUAGE us_english 
GO 
DECLARE @dt datetime 
SET @dt = '23.03.2009' --error 
GO 
SET LANGUAGE german 
GO 
DECLARE @dt datetime 
SET @dt = '23.03.2009' --ok 
GO 

사용 yyyydddd 또는이

SET LANGUAGE us_english 
SET DATEFORMAT DMY 
GO 
DECLARE @dt datetime 
SET @dt = '23.03.2009' --ok 
GO 
6

제가 DB에 비 지역화 된 날짜를 삽입하고 만 표시 시간을 현지화하는 것이 좋습니다.

2

ISO 형식의 문자열 날짜를 사용합니다. YYYY/MM/DD 거의 모든 시스템 (모든 로케일에서)은 ISO 포맷 날짜를 이해할 수 있습니다.

알 보르 Karaszi의 우수한 참조 : The ultimate guide to the datetime datatypes

+0

yyyy/mm/dd는 ISO가 아닙니다. SQL 2005가 ISO yyyymmdd를 인식하지 못하는 것을 보았던 곳을 참고하십시오. http://stackoverflow.com/questions/1138142/best-way-to-convert-and-validate-a-date-string/1138203#1138203 – gbn

+0

gbn과 동의하십시오. : ISO 8601은 링크 된 기사에 따르면 YYYY-MM-DD입니다. – OregonGhost

+1

엄밀히 말하면 ISO가 아니지만 내 말은 ... –