이 항목에서는 OLE DB 날짜 및 시간 향상과 관련된 다음 형식 및 형식 멤버에 대한 정보를 제공합니다.
DBBINDING 구조
ICommandWithParameters::GetParameterInfoICommandWithParameters::SetParameterInfoIColumnsRowset::GetColumnsRowsetIColumnsInfo::GetColumnInfo
ICommandWithParameters::GetParameterInfo
다음은 prgParamInfo를 통해 DBPARAMINFO 구조에 반환되는 정보입니다.
| 매개 변수 형식 | wType | ulParamSize | bPrecision | bScale |
dwFlags DBPARAMFLAGS_SS_ISVARIABLESCALE |
|---|---|---|---|---|---|
| 날짜 | DBTYPE_DBDATE | 6 | 10 | 0 | 맑다 |
| 시간 | DBTYPE_DBTIME2 | 10 | 8, 10..16 | 0..7 | 설정 |
| 스몰데이트타임 | DBTYPE_DBTIMESTAMP | 16 | 16 | 0 | 맑다 |
| 날짜 및 시간 | DBTYPE_DBTIMESTAMP | 16 | 23 | 3 | 맑다 |
| datetime2은(는) 데이터베이스 날짜 및 시간 형식의 데이터 타입입니다. | DBTYPE_DBTIMESTAMP | 16 | 19,21..27 | 0..7 | 설정 |
| DateTimeOffset (날짜 및 시간 오프셋) | DBTYPE_DBTIMESTAMPOFFSET | 20 | 26,28..34 | 0..7 | 설정 |
값 범위가 연속되지 않을 수도 있습니다. 이러한 경우는 소수 부분 자릿수가 0보다 커서 소수점을 추가했을 때 발생합니다.
DBPARAMFLAGS_SS_ISVARIABLESCALE SQL Server 2008 이상 서버에 연결된 경우에만 유효합니다. 하위 수준 서버에 연결된 경우에는 DBPARAMFLAGS_SS_ISVARIABLESCALE이 설정되지 않습니다.
ICommandWithParameters::SetParameterInfo 및 암시적 매개 변수 유형
DBPARAMBINDINFO 구조에 제공된 정보는 다음을 준수해야 합니다.
|
pwszDataSourceType (공급자별로 다름) |
pwszDataSourceType (OLE DB 일반) |
ulParamSize | bScale |
|---|---|---|---|
| DBTYPE_DATE | 6 | 무시됨 | |
| 날짜 | DBTYPE_DBDATE | 6 | 무시됨 |
| DBTYPE_DBTIME | 10 | 무시됨 | |
| 시간 | DBTYPE_DBTIME2 | 10 | 0..7 |
| 스몰데이트타임 | 16 | 무시됨 | |
| 날짜 및 시간 | 16 | 무시됨 | |
| datetime2 또는 DBTYPE_DBTIMESTAMP | DBTYPE_DBTIMESTAMP | 16 | 0..7 |
| DateTimeOffset (날짜 및 시간 오프셋) | DBTYPE_DBTIMESTAMPOFFSET | 20 | 0..7 |
bPrecision 매개 변수는 무시됩니다.
"DBPARAMFLAGS_SS_ISVARIABLESCALE"은 데이터를 서버로 보낼 때 무시됩니다. 애플리케이션은 공급자별 형식 이름 "" 및 "datetimesmalldatetime"를 사용하여 레거시 TDS(테이블 형식 데이터 스트림) 형식을 강제로 사용할 수 있습니다. SQL Server 2008 이상 서버에 연결된 경우 "" 형식이 사용되고 필요한 경우 형식 이름이 "datetime2" 또는 "datetime2DBTYPE_DBTIMESTAMP"인 경우 암시적 서버 변환이 발생합니다. 공급자별 형식 이름 "" 또는 "datetimesmalldatetime"을 사용하는 경우 bScale은 무시됩니다. 그렇지 않으면 appications에서 bScale 이 올바르게 설정되었는지 확인해야 합니다. "DBTYPE_DBTIMESTAMP"을 사용하는 SQL Server 2005에서 MDAC 및 SQL Server Native Client에서 업그레이드된 애플리케이션은 bScale 을 올바르게 설정하지 않으면 실패합니다. SQL Server 2008 이전의 서버 인스턴스에 연결된 경우 "DBTYPE_DBTIMESTAMP"이 있는 0 또는 3 이외의 bScale 값은 오류이며 E_FAIL 반환됩니다.
ICommandWithParameters::SetParameterInfo가 호출되지 않으면 공급자는 다음과 같이 IAccessor::CreateAccessor에 지정된 바인딩 형식의 서버 형식을 내포합니다.
| 바인딩 유형 |
pwszDataSourceType (공급자별로 다름) |
|---|---|
| DBTYPE_DATE | datetime2(0) |
| DBTYPE_DBDATE | 날짜 |
| DBTYPE_DBTIME | time(0) |
| DBTYPE_DBTIME2 | time(7) |
| DBTYPE_DBTIMESTAMP | datetime2(7) |
| DBTYPE_DBTIMESTAMPOFFSET | datetimeoffset(7) |
IColumnsRowset::GetColumnsRowset
IColumnsRowset::GetColumnsRowset 는 다음 열을 반환합니다.
| 열 형식 | DBCOLUMN_TYPE | DBCOLUM_COLUMNSIZE | DBCOLUMN_PRECISION | DBCOLUMN_SCALE, DBCOLUMN_DATETIMEPRECISION | DBCOLUMN_FLAGS, DBCOLUMNFLAGS_SS_ISVARIABLESCALE |
|---|---|---|---|---|---|
| 날짜 | DBTYPE_DBDATE | 6 | 10 | 0 | 맑다 |
| 시간 | DBTYPE_DBTIME2 | 10 | 8, 10..16 | 0..7 | 설정 |
| 스몰데이트타임 | DBTYPE_DBTIMESTAMP | 16 | 16 | 0 | 맑다 |
| 날짜 및 시간 | DBTYPE_DBTIMESTAMP | 16 | 23 | 3 | 맑다 |
| datetime2은(는) 데이터베이스 날짜 및 시간 형식의 데이터 타입입니다. | DBTYPE_DBTIMESTAMP | 16 | 19, 21..27 | 0..7 | 설정 |
| DateTimeOffset (날짜 및 시간 오프셋) | DBTYPE_DBTIMESTAMPOFFSET | 20 | 26, 28..34 | 0..7 | 설정 |
DBCOLUMN_FLAGS에서 날짜/시간 유형에 대해 DBCOLUMNFLAGS_ISFIXEDLENGTH는 항상 true이지만 다음과 같은 플래그는 항상 false입니다.
DBCOLUMNFLAGS_CACHEDEFERRED
DBCOLUMNFLAGS_ISBOOKMARK
DBCOLUMNFLAGS_ISCHAPTER
DBCOLUMNFLAGS_ISLONG
DBCOLUMNFLAGS_ISROWID
DBCOLUMNFLAGS_ISROWVER
DBCOLUMNFLAGS_MAYDEFER
나머지 플래그(DBCOLUMNFLAGS_ISNULLABLE, DBCOLUMNFLAGS_MAYBENULL, DBCOLUMNFLAGS_WRITE 및 DBCOLUMNFLAGS_WRITEUNKNOWN)는 열이 정의된 방법 및 실제 쿼리에 따라 설정될 수 있습니다.
새 플래그 DBCOLUMNFLAGS_SS_ISVARIABLESCALE는 애플리케이션에서 DBCOLUMN_TYPE이 DBTYPE_DBTIMESTAMP인 열의 서버 유형을 확인할 수 있도록 DBCOLUMN_FLAGS에 제공됩니다. 서버 유형을 확인하려면 DBCOLUMN_SCALE 또는 DBCOLUMN_DATETIMEPRECISION도 사용해야 합니다.
DBCOLUMNFLAGS_SS_ISVARIABLESCALE SQL Server 2008 이상 서버에 연결된 경우에만 유효합니다. 하위 수준 서버에 연결된 경우에는 DBCOLUMNFLAGS_SS_ISVARIABLESCALE이 정의되지 않습니다.
IColumnsInfo::GetColumnInfo
DBCOLUMNINFO 구조는 다음 정보를 반환합니다.
| 매개 변수 형식 | wType | ulColumnSize | bPrecision | bScale |
dwFlags DBPARAMFLAGS_SS_ISVARIABLESCALE |
|---|---|---|---|---|---|
| 날짜 | DBTYPE_DBDATE | 6 | 10 | 0 | 맑다 |
| time(1..7) | DBTYPE_DBTIME2 | 10 | 8, 10..16 | 0..7 | 설정 |
| 스몰데이트타임 | DBTYPE_DBTIMESTAMP | 16 | 16 | 0 | 맑다 |
| 날짜 및 시간 | DBTYPE_DBTIMESTAMP | 16 | 23 | 3 | 맑다 |
| datetime2은(는) 데이터베이스 날짜 및 시간 형식의 데이터 타입입니다. | DBTYPE_DBTIMESTAMP | 16 | 19, 21..27 | 0..7 | 설정 |
| DateTimeOffset (날짜 및 시간 오프셋) | DBTYPE_DBTIMESTAMPOFFSET | 20 | 26, 28..34 | 0..7 | 설정 |
dwFlags에서 날짜/시간 유형에 대해 DBCOLUMNFLAGS_ISFIXEDLENGTH는 항상 true이지만 다음과 같은 플래그는 항상 false입니다.
DBCOLUMNFLAGS_CACHEDEFERRED
DBCOLUMNFLAGS_ISBOOKMARK
DBCOLUMNFLAGS_ISCHAPTER
DBCOLUMNFLAGS_ISLONG
DBCOLUMNFLAGS_ISROWID
DBCOLUMNFLAGS_ISROWVER, 메이데퍼
나머지 플래그(DBCOLUMNFLAGS_ISNULLABLE, DBCOLUMNFLAGS_MAYBENULL, DBCOLUMNFLAGS_WRITE 및 DBCOLUMNFLAGS_WRITEUNKNOWN)가 설정될 수 있습니다.
새 플래그 DBCOLUMNFLAGS_SS_ISVARIABLESCALE은 애플리케이션에서 wType이 DBTYPE_DBTIMESTAMP인 열의 서버 유형을 확인할 수 있도록 dwFlags에 제공됩니다. 서버 유형을 확인하려면 bScale도 사용해야 합니다.