이 섹션에서는 값 간에 datetimedatetimeoffset 변환하는 방법을 설명합니다. 이 섹션에 설명된 변환은 OLE DB에서 이미 제공되었거나 OLE DB의 일관된 확장입니다.
OLE DB의 날짜 및 시간에 대한 리터럴 및 문자열 형식은 일반적으로 ISO를 따르며 클라이언트 로캘에 종속되지 않습니다. 한 가지 예외는 DBTYPE_DATE 있습니다. 여기서 표준은 OLE Automation입니다. 그러나 SQL Server Native Client는 데이터가 클라이언트 간에 전송될 때만 형식 간에 변환되므로 애플리케이션에서 SQL Server Native Client가 DBTYPE_DATE 문자열 형식 간에 변환하도록 강제할 수 있는 방법은 없습니다. 그렇지 않으면 문자열은 다음 형식을 사용합니다(대괄호 안의 텍스트는 선택적 요소를 나타냅니다.)
문자열의
datetime형식은datetimeoffset다음과 같습니다.yyyy-밀리미터-dd[ hh:mm:ss[.9999999][ ?? hh:mm]]
문자열 형식
time은 다음과 같습니다.hh:mm:ss[.9999999]
문자열 형식
date은 다음과 같습니다.yyyy-밀리미터-dd
비고
이전 버전의 SQL Server Native Client 및 SQLOLEDB는 표준 변환에 실패한 경우 OLE 변환을 구현했습니다. 따라서 SQL Server Native Client 10.0 이상에서 수행되는 일부 변환은 OLE DB 사양과 다릅니다.
문자열에서 변환하면 공백과 필드 너비를 유연하게 사용할 수 있습니다. 자세한 내용은 OLE DB 날짜 및 시간 개선에 대한 데이터 형식 지원의 "데이터 형식: 문자열 및 리터럴" 섹션을 참조하세요.
다음은 일반 변환 규칙입니다.
문자열이 날짜/시간 형식으로 변환되면 문자열이 먼저 ISO 리터럴로 구문 분석됩니다. 이 작업이 실패하면 문자열은 시간 구성 요소가 있는 OLE 날짜 리터럴로 구문 분석됩니다.
시간이 없지만 수신기가 시간을 저장할 수 있는 경우 시간은 0으로 설정됩니다. 날짜가 없지만 수신자가 날짜를 저장할 수 있는 경우 날짜는 ISO 변환이 사용되는 현재 날짜로 설정되고 OLE 변환이 사용되는 경우 1899-12-30으로 설정됩니다.
클라이언트가 사용하는 데이터 형식에 표준 시간대가 없지만 서버가 표준 시간대를 저장할 수 있는 경우 클라이언트의 데이터는 클라이언트 표준 시간대에 있는 것으로 간주됩니다.
서버에 표준 시간대가 없지만 클라이언트에 표준 시간대 정보가 있는 경우 UTC 표준 시간대가 가정됩니다. 이는 서버 동작과 다릅니다.
시간이 있지만 수신기가 시간을 저장할 수 없는 경우 시간 구성 요소는 무시됩니다.
날짜가 있지만 수신자가 날짜를 저장할 수 없는 경우 날짜 구성 요소는 무시됩니다.
클라이언트에서 서버로 변환할 때 초 또는 소수 자릿수 초의 잘림이 발생하면 DB_E_ERRORSOCCURRED 반환되고 상태 DBSTATUS_E_DATAOVERFLOW 설정됩니다.
서버에서 클라이언트로 변환할 때 초 또는 소수 자릿수 초의 잘림이 발생하면 DBSTATUS_S_TRUNCATED 설정됩니다.
이 섹션 안에
클라이언트에서 서버로 수행되는 변환
SQL Server Native Client OLE DB로 작성된 클라이언트 애플리케이션과 SQL Server 2008 이상 간에 수행되는 날짜/시간 변환에 대해 설명합니다.
서버에서 클라이언트로 수행되는 변환
SQL Server 2008 이상과 SQL Server Native Client OLE DB로 작성된 클라이언트 애플리케이션 간에 수행되는 날짜/시간 변환에 대해 설명합니다.