저장 프로시저를 실행하는 날짜와 매개변수:명령 객체에 대한 연결 객체

StackOverflow https://stackoverflow.com/questions/83038

문제

을 공급할 때 날짜를 저장 프로시저를 통해 매개변수 저는 작동하는 형식을 사용한다.원 VBA 사용되는 구문 ADO 연결 객체를 저장 프로시저를 실행:

Set SentDetailRS = Me.ADOConnectionToIntegrity.Execute("dbo.s_SelectAggregatedSentDetailList '" & fCSQLDate(EffectiveDate) & "'", , adCmdText)

이 나를 위해 날짜를 사용하여 구문 yyyy-mm-dd 그 때 다른 사용자의 코드를 실행 그들이 받을 오류가:13'형식 불일치'.

일부 실험 후 저는 공급하는 형식으로 날짜 dd/mm/yyyy 이 오류는 수정 사용자를 위해 그러나 이제 내게 오류를 제공합니다!

저장 프로시저를 실행 명령을 사용하여 개체 매개 변수로 작품의 형식에 관계없이 날짜를(가정 ADO 관리 서식 뒤에서).내가 생각하는 형식을 사용하여 yyyy-mm-dd 작동 보편적으로 SQL Server?

나는 또한 난처한 이유로 이 문제가 나타납 사용자가 특정입니까?나의 기본적 언어에 SQL Server 이'영어'하는 반면 다른 사용자의 기본적 언어가 영국 영어',할 수 있는 문제가 발생?

내가 사용하여 ADO2.8 액세스와 2003 년과 SQL Server2000,SQL 서버 로그인을 통해 Windows integrated security.

도움이 되었습니까?

해결책

조심하고 믿지 않는 ADO 을 돌보는 문제입니다.Universal SQL 날짜 형식은'YYYYMMDD'하는 동안,모두 SQL 및 액세에 의해 영향을 받는 지역 설정의 기계 방식으로 날짜를 표시하고 그들을 변환하는지에 문자열.

잊지 않는 날짜를 구분#에 액세스하는 동안,그것은'에서 SQL

내 최고의 조언을 것입을 체계적으로 변환 액세스#MM-DD-YYYY#(또는 이와 유사한)로'YYYYMMDD'하기 전에 보내는 명령어 당신의 서버입니다.를 구축할 수있는 작은과 같은 기능:

Public function SQLdateFormat(x_date) as string

SQLDateFormat = _
   trim(str(datePart("yyyy",x_date))) & _
   right(str(datePart("m",date)),2) & _
   right(str(datePart("d",date)),2)

   ''be carefull, you might get something like '2008 9 3'
SQLDateFormat = replace(functionSQLDateFormat," ","0")
   '' you will have the expected '20080903'

End function

하지 않는 경우 프로그래밍 방식으로 구축/삽입 업데이트 문자열을 전송하기 전에 서버가 다음 조언을 설정하는 지역 설정을 모든 컴퓨터의 지역 설정 기기를 호스팅 SQL.이 있을 수도 있습이 있는지 확인하기 위해 특정 날짜 형식에 귀하의 SQL 서버(나).Personnaly,해결 그의 이런 종류의 현지화 문제는(그것은 또한 때 일어나는 혼수 상태로 사용되는 소수 구분 기호에 프랑스)또는 SQL 특정 문자 문제(면 따옴표나 큰 따옴표 문자열)으로 후퇴하는 SQL 지침 보내기 전에 서버입니다.

다른 팁

내가 생각했던 것과 fCSQLDate 기능 culture-즉그것이 구문 분석하고 날짜를 기반으로 사용자의 로캘 설정합니다.그런 이유로 당신은 문제를 참조하십시오.

어쨌든,쿼리를 사용하여으로 연결된 문자열이 항상 아이디어(공격에 주입).당신은 더 나은 사용하는 경우 매개 변수입니다.

액세스 사용#으로 날짜 필드 구분자.형식이어야 합#mm/dd/yyyy#아마#mm-dd-yyyy#도 잘 작동합니다.

운 mysql,하지만 오라클 나는 항상 명시 상태는 형식으로 내가 기대하는 형식으로서,예를 들어:'/MM/DD-YYYY'을 방지하기 위해,(지역)형식으로 날짜 문제

왜 형식을 사용하지

dd mmm yyyy

거기에 하나의 방법이 될 수 있습 해석됩니다.

사용할 수 있습니다 Date()함수를 반환하는 보편적인 날짜를 기반으로 기계의 날짜 및 시간 설정입니다.지역 설정 기계에서 결정하는 방법 이 포맷에서 클라이언트.는 경우에 당신을 떠날 필드 strictle DateTime 필드 그때 클라이언트는 지역 설정할 수 있는 형식으로 날짜.

으로 서버 사용하여,Date()함수는 또한 일(반환하는 보편적인 날짜 값).

또한,명령을 사용하여 개체 매개변수에서 쿼리를 통과 할 때 그들을 피하기 위해 SQL injection 공격에서 문자열이다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top