Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Sistema de Plataforma de Análise (PDW)
Banco de dados SQL no Microsoft Fabric
Este artigo fornece informações sobre o tipo e os membros de tipo a seguir, relacionados às melhorias de data e hora do OLE DB.
Estrutura DBBINDING
ICommandWithParameters::GetParameterInfo
ICommandWithParameters::SetParameterInfo
IColumnsRowset::GetColumnsRowset
IColumnsInfo::GetColumnInfo
ICommandWithParameters::GetParameterInfo
As seguintes informações são retornadas na estrutura DBPARAMINFO por meio de prgParamInfo:
| Tipo de parâmetro | wType | ulParamSize | bPrecision | bScale |
dwFlags DBPARAMFLAGS_SS_ISVARIABLESCALE |
|---|---|---|---|---|---|
| date | DBTYPE_DBDATE | 6 | 10 | 0 | Liberada |
| time | DBTYPE_DBTIME2 | 10 | 8, 10..16 | 0..7 | Definir |
| smalldatetime | DBTYPE_DBTIMESTAMP | 16 | 16 | 0 | Liberada |
| datetime | DBTYPE_DBTIMESTAMP | 16 | 23 | 3 | Liberada |
| datetime2 | DBTYPE_DBTIMESTAMP | 16 | 19, 21..27 | 0..7 | Definir |
| datetimeoffset | DBTYPE_DBTIMESTAMPOFFSET | 20 | 26, 28..34 | 0..7 | Definir |
Observe que em alguns casos os intervalos de valores não são contínuos. Isso se deve à adição de um ponto decimal quando a precisão fracionária é maior que zero.
DBPARAMFLAGS_SS_ISVARIABLESCALE só é válido quando conectado a um servidor que executa o SQL Server 2008 (10.0.x) e versões posteriores. DBPARAMFLAGS_SS_ISVARIABLESCALE nunca é definido quando conectado a servidores de nível inferior.
ICommandWithParameters::SetParameterInfo e tipos de parâmetro implícitos
As informações fornecidas na estrutura DBPARAMBINDINFO devem estar de acordo com o seguinte:
|
pwszDataSourceType (específico do provedor) |
pwszDataSourceType (OLE DB genérico) |
ulParamSize | bScale |
|---|---|---|---|
| DBTYPE_DATE | 6 | Ignored | |
| date | DBTYPE_DBDATE | 6 | Ignored |
| DBTYPE_DBTIME | 10 | Ignored | |
| time | DBTYPE_DBTIME2 | 10 | 0..7 |
| smalldatetime | 16 | Ignored | |
| datetime | 16 | Ignored | |
| datetime2 ou DBTYPE_DBTIMESTAMP | DBTYPE_DBTIMESTAMP | 16 | 0..7 |
| datetimeoffset | DBTYPE_DBTIMESTAMPOFFSET | 20 | 0..7 |
O parâmetro bPrecision é ignorado.
"DBPARAMFLAGS_SS_ISVARIABLESCALE" é ignorado ao enviar dados ao servidor. Os aplicativos podem forçar o uso de tipos do protocolo TDS herdados usando os nomes de tipo específicos do provedor "datetime" e "smalldatetime". Quando você estiver conectado a servidores que executam o SQL Server 2008 (10.0.x) e versões posteriores, o formato "datetime2" será usado e uma conversão de servidor implícita ocorrerá, se necessário, quando o nome do tipo for "datetime2" ou "DBTYPE_DBTIMESTAMP". bScale será ignorado se os nomes "datetime" ou "smalldatetime" específicos do provedor forem usados. Caso contrário, os aplicativos precisam garantir que bScale esteja definido corretamente. Aplicativos atualizados do MDAC e do Driver do OLE DB para SQL Server do SQL Server 2005 (9.x) que usarem "DBTYPE_DBTIMESTAMP" falharão se eles não definirem bScale corretamente. Quando você estiver conectado a instâncias do servidor anteriores ao SQL Server 2008 (10.0.x), um valor bScale diferente de 0 ou 3 com "DBTYPE_DBTIMESTAMP" será considerado um erro e E_FAIL será retornado.
Quando ICommandWithParameters::SetParameterInfo não for chamado, o provedor presume o tipo do servidor com base no tipo de associação, conforme definido em IAccessor::CreateAccessor e demonstrado no seguinte exemplo:
| Tipo de associação |
pwszDataSourceType (específico do provedor) |
|---|---|
| DBTYPE_DATE | datetime2(0) |
| DBTYPE_DBDATE | date |
| DBTYPE_DBTIME | time(0) |
| DBTYPE_DBTIME2 | time(7) |
| DBTYPE_DBTIMESTAMP | Datetime2 (7) |
| DBTYPE_DBTIMESTAMPOFFSET | datetimeoffset(7) |
IColumnsRowset::GetColumnsRowset
IColumnsRowset::GetColumnsRowset retorna as seguintes colunas:
| Tipo de coluna | DBCOLUMN_TYPE | DBCOLUMN_COLUMNSIZE | DBCOLUMN_PRECISION | DBCOLUMN_SCALE, DBCOLUMN_DATETIMEPRECISION | DBCOLUMN_FLAGS, DBCOLUMNFLAGS_SS_ISVARIABLESCALE |
|---|---|---|---|---|---|
| date | DBTYPE_DBDATE | 6 | 10 | 0 | Liberada |
| time | DBTYPE_DBTIME2 | 10 | 8, 10..16 | 0..7 | Definir |
| smalldatetime | DBTYPE_DBTIMESTAMP | 16 | 16 | 0 | Liberada |
| datetime | DBTYPE_DBTIMESTAMP | 16 | 23 | 3 | Liberada |
| datetime2 | DBTYPE_DBTIMESTAMP | 16 | 19, 21..27 | 0..7 | Definir |
| datetimeoffset | DBTYPE_DBTIMESTAMPOFFSET | 20 | 26, 28..34 | 0..7 | Definir |
Em DBCOLUMN_FLAGS, DBCOLUMNFLAGS_ISFIXEDLENGTH é sempre true para os tipos de data/hora e os seguintes sinalizadores são sempre false:
DBCOLUMNFLAGS_CACHEDEFERRED
DBCOLUMNFLAGS_ISBOOKMARK
DBCOLUMNFLAGS_ISCHAPTER
DBCOLUMNFLAGS_ISLONG
DBCOLUMNFLAGS_ISROWID
DBCOLUMNFLAGS_ISROWVER
DBCOLUMNFLAGS_MAYDEFER
Os sinalizadores restantes (DBCOLUMNFLAGS_ISNULLABLE, DBCOLUMNFLAGS_MAYBENULL, DBCOLUMNFLAGS_WRITE e DBCOLUMNFLAGS_WRITEUNKNOWN) podem ser definidos, dependendo de como a coluna é definida e da consulta propriamente dita.
Um novo sinalizador DBCOLUMNFLAGS_SS_ISVARIABLESCALE é fornecido em DBCOLUMN_FLAGS para permitir que um aplicativo determine o tipo de servidor de colunas, onde DBCOLUMN_TYPE é DBTYPE_DBTIMESTAMP. DBCOLUMN_SCALE ou DBCOLUMN_DATETIMEPRECISION também deve ser usado para identificar o tipo de servidor.
DBCOLUMNFLAGS_SS_ISVARIABLESCALE só é válido quando conectado a um servidor que executa o SQL Server 2008 (10.0.x) e versões posteriores. DBCOLUMNFLAGS_SS_ISVARIABLESCALE é indefinido quando conectado a servidores de nível inferior.
IColumnsInfo::GetColumnInfo
A estrutura DBCOLUMNINFO retorna as seguintes informações:
| Tipo de parâmetro | wType | ulColumnSize | bPrecision | bScale |
dwFlags DBPARAMFLAGS_SS_ISVARIABLESCALE |
|---|---|---|---|---|---|
| date | DBTYPE_DBDATE | 6 | 10 | 0 | Liberada |
| time(1..7) | DBTYPE_DBTIME2 | 10 | 8, 10..16 | 0..7 | Definir |
| smalldatetime | DBTYPE_DBTIMESTAMP | 16 | 16 | 0 | Liberada |
| datetime | DBTYPE_DBTIMESTAMP | 16 | 23 | 3 | Liberada |
| datetime2 | DBTYPE_DBTIMESTAMP | 16 | 19, 21..27 | 0..7 | Definir |
| datetimeoffset | DBTYPE_DBTIMESTAMPOFFSET | 20 | 26, 28..34 | 0..7 | Definir |
Em dwFlags, DBCOLUMNFLAGS_ISFIXEDLENGTH sempre tem o valor verdadeiro para os tipos de data/hora e os seguintes sinalizadores sempre têm o valor falso:
DBCOLUMNFLAGS_CACHEDEFERRED
DBCOLUMNFLAGS_ISBOOKMARK
DBCOLUMNFLAGS_ISCHAPTER
DBCOLUMNFLAGS_ISLONG
DBCOLUMNFLAGS_ISROWID
DBCOLUMNFLAGS_ISROWVER, MAYDEFER
Os sinalizadores restantes (DBCOLUMNFLAGS_ISNULLABLE, DBCOLUMNFLAGS_MAYBENULL, DBCOLUMNFLAGS_WRITE e DBCOLUMNFLAGS_WRITEUNKNOWN) podem ser definidos.
Um novo sinalizador, DBCOLUMNFLAGS_SS_ISVARIABLESCALE, é fornecido em dwFlags para permitir que um aplicativo determine o tipo de servidor de colunas, em que wType é DBTYPE_DBTIMESTAMP. bScale também precisa ser usado para identificar o tipo de servidor.
Consulte Também
Suporte a tipos de dados para melhorias de data e hora do OLE DB