이 항목에서는 SQL Server Native Client OLE DB로 작성된 클라이언트 애플리케이션과 SQL Server 2008 이상 간에 수행되는 날짜/시간 변환에 대해 설명합니다.
변환
이 항목에서는 클라이언트에서 수행된 변환에 대해 설명합니다. 클라이언트가 서버에 정의된 매개 변수와 다른 매개 변수의 소수 자릿수 초 정밀도를 지정하는 경우 클라이언트 변환으로 인해 서버에서 작업이 성공할 수 있는 경우 오류가 발생할 수 있습니다. 특히 클라이언트는 소수 자릿수 초의 잘림을 오류로 처리하는 반면 SQL Server는 시간 값을 가장 가까운 전체 초로 반올림합니다.
ICommandWithParameters::SetParameterInfo가 호출되지 않으면 DBTYPE_DBTIMESTAMP 바인딩은 마치 변환됩니다 datetime2.
| 받는 사람-> 부터 |
DBDATE(날짜) | DBTIME(시간) | DBTIME2(시간) | DBTIMESTAMP(smalldatetime) | DBTIMESTAMP(datetime) | DBTIMESTAMP(datetime2) | DBTIMESTAMPOFFSET(datetimeoffset) | STR (주) | WSTR | SQLVARIANT (sql_variant) |
|---|---|---|---|---|---|---|---|---|---|---|
| 날짜 | 1,2 | 1,3,4 | 4,12 | 1,12 | 1,12 | 1,12 | 1,5, 12 | 1,12 | 1,12 | 1,12 datetime2(0) |
| DBDATE | 1 | - | - | 1,6 | 1,6 | 1,6 | 1,5, 6 | 1,10 | 1,10 | 1 날짜 |
| DBTIME | - | 1 | 1 | 1,7 | 1,7 | 1,7 | 1,5, 7 | 1,10 | 1,10 | 1 Time(0) |
| DBTIME2 | - | 1,3 | 1 | 1,7,10,14 | 1,7,10,15 | 1,7,10 | 1,5,7,10 | 1,10,11 | 1,10,11 | 1 Time(7) |
| DBTIMESTAMP | 1,2 | 1,3,4 | 1,4,10 | 1,10,14 | 1,10,15 | 1,10 | 1,5,10 | 1,10,11 | 1,10,11 | 1,10 datetime2(7) |
| DBTIMESTAMPOFFSET (데이터베이스 타임스탬프 오프셋) | 1,2,8 | 1,3,4,8 | 1,4,8,10 | 1,8,10,14 | 1,8,10,15 | 1,8,10 | 1,10 | 1,10,11 | 1,10,11 | 1,10 datetimeoffset(7) |
| FILETIME | 1,2 | 1,3,4 | 1,4,13 | 1,13 | 1,13 | 1,13 | 1,5,13 | 1,13 | 1,10 | 1,13 datetime2(3) |
| 바이트 | - | - | - | - | - | - | - | 해당 없음(N/A) | 해당 없음(N/A) | 해당 없음(N/A) |
| 변형 | 1 | 1 | 1 | 1,10 | 1,10 | 1,10 | 1,10 | 해당 없음(N/A) | 해당 없음(N/A) | 1,10 |
| SSVARIANT | 1,16 | 1,16 | 1,16 | 1,10,16 | 1,10,16 | 1,10,16 | 1,10,16 | 해당 없음(N/A) | 해당 없음(N/A) | 1,16 |
| BSTR | 1,9 | 1,9 | 1,9,10 | 1,9,10 | 1,9,10 | 1,9,10 | 1,9,10 | 해당 없음(N/A) | 해당 없음(N/A) | 해당 없음(N/A) |
| STR (주) | 1,9 | 1,9 | 1,9,10 | 1,9,10 | 1,9,10 | 1,9,10 | 1,9,10 | 해당 없음(N/A) | 해당 없음(N/A) | 해당 없음(N/A) |
| WSTR | 1,9 | 1,9 | 1,9,10 | 1,9,10 | 1,9,10 | 1,9,10 | 1,9,10 | 해당 없음(N/A) | 해당 없음(N/A) | 해당 없음(N/A) |
기호 설명
| 기호 | 의미 |
|---|---|
| - | 변환이 지원되지 않습니다. IAccessor::CreateAccessor가 호출될 때 바인딩의 유효성이 검사되면 rgStatus에서 DBBINDSTATUS_UPSUPPORTEDCONVERSION 반환됩니다. 접근자 유효성 검사가 지연되면 DBSTATUS_E_BADACCESSOR 설정됩니다. |
| 해당 없음(N/A) | 적용할 수 없습니다. |
| 1 | 제공된 데이터가 유효하지 않으면 DBSTATUS_E_CANTCONVERTVALUE 설정됩니다. 변환이 적용되기 전에 입력 데이터의 유효성이 검사되므로 후속 변환에서 구성 요소를 무시하더라도 변환이 성공하려면 여전히 유효해야 합니다. |
| 2 | 시간 필드는 무시됩니다. |
| 3 | 소수 자릿수 초는 0이거나 DBSTATUS_E_DATAOVERFLOW 설정되어야 합니다. |
| 4 | 날짜 구성 요소가 무시됩니다. |
| 5 | 표준 시간대는 클라이언트의 표준 시간대 설정으로 설정됩니다. |
| 6 | 시간이 0으로 설정됩니다. |
| 7 | 날짜가 현재 날짜로 설정됩니다. |
| 8 (여덟) | 시간은 UTC로 변환됩니다. 이 변환 중에 오류가 발생하면 DBSTATUS_E_CANTCONVERTVALUE 설정됩니다. |
| 9 | 문자열은 ISO 리터럴로 구문 분석되고 대상 형식으로 변환됩니다. 이 작업이 실패하면 문자열은 OLE 날짜 리터럴(시간 구성 요소도 포함)으로 구문 분석되고 OLE 날짜(DBTYPE_DATE)에서 대상 형식으로 변환됩니다. 대상 형식이 DBTIMESTAMP, smalldatetimedatetime또는 datetime2문자열이 날짜, 시간 또는 리터럴의 구문 또는 datetime2 OLE에서 인식하는 구문을 준수해야 합니다. 문자열이 날짜 리터럴이면 모든 시간 구성 요소가 0으로 설정됩니다. 문자열이 시간 리터럴이면 날짜가 현재 날짜로 설정됩니다.다른 모든 대상 형식의 경우 문자열은 대상 형식의 리터럴 구문을 준수해야 합니다. |
| 10 | 데이터 손실이 있는 소수 자릿수 초의 잘림이 발생하면 DBSTATUS_E_DATAOVERFLOW 설정됩니다. 문자열 변환의 경우 문자열이 ISO 구문을 준수하는 경우에만 오버플로 검사를 사용할 수 있습니다. 문자열이 OLE 날짜 리터럴이면 소수 자릿수 초가 반올림됩니다. DBTIMESTAMP(datetime)에서 smalldatetime SQL Server Native Client로 변환하는 경우 DBSTATUS_E_DATAOVERFLOW 오류를 발생시키는 대신 초 값이 자동으로 잘립니다. |
| 11 | 다음 표에 따르면 소수 자릿수 초 자릿수(소수 자릿수)는 대상 열의 크기에서 결정됩니다. 테이블의 범위보다 열 크기가 큰 경우 소수 자릿수가 9인 것으로 간주됩니다. 이 변환은 소수 자릿수 초의 자릿수를 OLE DB에서 허용하는 최대값인 9자리까지 허용합니다. 그러나 원본 형식이 DBTIMESTAMP이고 소수 자릿수 초가 0이면 소수 자릿수 두 번째 숫자 또는 소수점이 생성되지 않습니다. 이 동작은 이전 OLE DB 공급자를 사용하여 개발된 애플리케이션에 대한 이전 버전과의 호환성을 보장합니다. 열 크기가 ~0이면 OLE DB의 크기가 제한되지 않습니다(DBTIMESTAMP에 대한 3자리 규칙이 적용되지 않는 한 9자리 숫자). DBTIME2 - 8, 10..18(문자의 길이); 0, 1..9(배율) DBTIMESTAMP - 19, 21..29(문자의 길이); 0, 1..9(배율) DBTIMESTAMPOFFSET - 26, 28..36(문자의 길이); 0, 1..9(배율) |
| 12 | DBTYPE_DATE SQL Server 2008 이전의 변환 의미 체계는 유지 관리됩니다. 소수 자릿수 초는 0으로 잘립니다. |
| 13 | DBTYPE_FILETIME SQL Server 2008 이전의 변환 의미 체계는 유지 관리됩니다. Windows FileTimeToSystemTime API를 사용하는 경우 소수 자릿수 초 정밀도는 1밀리초로 제한됩니다. |
| 14 | SQL Server 2008 smalldatetime 이전의 변환 의미 체계는 유지 관리됩니다. 초는 0으로 설정됩니다. |
| 15 | SQL Server 2008 datetime 이전의 변환 의미 체계는 유지 관리됩니다. 초는 가장 가까운 300초로 반올림됩니다. |
| 16 | SSVARIANT 클라이언트 구조체에 포함된 값(지정된 형식)의 변환 동작은 SSVARIANT 클라이언트 구조체에 포함되지 않은 경우 동일한 값 및 형식의 동작과 동일합니다. |