Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Aplica a:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Sistema de Plataforma de Analítica (PDW)
Base de datos SQL en Microsoft Fabric
En este artículo, se proporciona información sobre los siguientes tipos y miembros de tipo relacionados con las mejoras de fecha y hora de OLE DB.
Estructura DBBINDING
ICommandWithParameters::GetParameterInfo
ICommandWithParameters::SetParameterInfo
IColumnsRowset::GetColumnsRowset
IColumnsInfo::GetColumnInfo
ICommandWithParameters::GetParameterInfo
La siguiente información se devuelve en la estructura DBPARAMINFO mediante prgParamInfo:
| Tipo de parámetro | wType | ulParamSize | bPrecision | bScale |
dwFlags DBPARAMFLAGS_SS_ISVARIABLESCALE |
|---|---|---|---|---|---|
| date | DBTYPE_DBDATE | 6 | 10 | 0 | Desactivar |
| time | DBTYPE_DBTIME2 | 10 | 8, 10..16 | 0..7 | Set |
| smalldatetime | DBTYPE_DBTIMESTAMP | 16 | 16 | 0 | Desactivar |
| datetime | DBTYPE_DBTIMESTAMP | 16 | 23 | 3 | Desactivar |
| datetime2 | DBTYPE_DBTIMESTAMP | 16 | 19, 21..27 | 0..7 | Set |
| datetimeoffset | DBTYPE_DBTIMESTAMPOFFSET | 20 | 26, 28..34 | 0..7 | Set |
Observe que en algunos casos los intervalos de valores no son continuos. Esto se debe a la adición de un separador decimal cuando la precisión fraccionaria es mayor que cero.
DBPARAMFLAGS_SS_ISVARIABLESCALE solo es válido cuando se conecta a un servidor que ejecuta SQL Server 2008 (10.0.x) y versiones posteriores. DBPARAMFLAGS_SS_ISVARIABLESCALE no se establece nunca cuando se conecta a servidores de nivel inferior.
ICommandWithParameters::SetParameterInfo y tipos de parámetro implícitos
La información que se proporciona en la estructura DBPARAMBINDINFO debe cumplir lo siguiente:
|
pwszDataSourceType (depende del proveedor) |
pwszDataSourceType (OLE DB genérico) |
ulParamSize | bScale |
|---|---|---|---|
| DBTYPE_DATE | 6 | Omitido | |
| date | DBTYPE_DBDATE | 6 | Omitido |
| DBTYPE_DBTIME | 10 | Omitido | |
| time | DBTYPE_DBTIME2 | 10 | 0..7 |
| smalldatetime | 16 | Omitido | |
| datetime | 16 | Omitido | |
| datetime2 o DBTYPE_DBTIMESTAMP | DBTYPE_DBTIMESTAMP | 16 | 0..7 |
| datetimeoffset | DBTYPE_DBTIMESTAMPOFFSET | 20 | 0..7 |
Se omite el parámetro bPrecision.
No se tiene en cuenta "DBPARAMFLAGS_SS_ISVARIABLESCALE" al enviar los datos al servidor. Las aplicaciones pueden exigir el uso de tipos heredados de flujo TDS mediante los nombres de tipo específico del proveedor "datetime" y "smalldatetime". Cuando se conecte a los servidores de SQL Server 2008 (10.0.x) y versiones posteriores, se usará el formato "datetime2" y, si es necesario, se producirá una conversión implícita de servidor cuando el nombre de tipo sea "datetime2" o "DBTYPE_DBTIMESTAMP". bScale se omite si se usan los nombres de tipo específico del proveedor "datetime" o "smalldatetime". De lo contrario, las aplicaciones deben asegurarse de que bScale se establezca correctamente. Las aplicaciones actualizadas a partir de MDAC y OLE DB Driver for SQL Server de SQL Server 2005 (9.x) que usan "DBTYPE_DBTIMESTAMP" generarán un error si no establecen bScale correctamente. Cuando esté conectado a las instancias de servidor anteriores a SQL Server 2008 (10.0.x), un valor bScale que no sea 0 o 3 con "DBTYPE_DBTIMESTAMP" es un error y se devolverá E_FAIL.
Cuando no se llama a ICommandWithParameters::SetParameterInfo, el proveedor supone que el tipo de servidor procede del tipo de enlace, como se especifica en IAccessor::CreateAccessor de la manera siguiente:
| Tipo de enlace |
pwszDataSourceType (depende del proveedor) |
|---|---|
| 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 devuelve las columnas siguientes:
| Tipo de columna | DBCOLUMN_TYPE | DBCOLUMN_COLUMNSIZE | DBCOLUMN_PRECISION | DBCOLUMN_SCALE, DBCOLUMN_DATETIMEPRECISION | DBCOLUMN_FLAGS, DBCOLUMNFLAGS_SS_ISVARIABLESCALE |
|---|---|---|---|---|---|
| date | DBTYPE_DBDATE | 6 | 10 | 0 | Desactivar |
| time | DBTYPE_DBTIME2 | 10 | 8, 10..16 | 0..7 | Set |
| smalldatetime | DBTYPE_DBTIMESTAMP | 16 | 16 | 0 | Desactivar |
| datetime | DBTYPE_DBTIMESTAMP | 16 | 23 | 3 | Desactivar |
| datetime2 | DBTYPE_DBTIMESTAMP | 16 | 19, 21..27 | 0..7 | Set |
| datetimeoffset | DBTYPE_DBTIMESTAMPOFFSET | 20 | 26, 28..34 | 0..7 | Set |
DBCOLUMN_FLAGS, DBCOLUMNFLAGS_ISFIXEDLENGTH es siempre TRUE para los tipos de fecha y hora, y las marcas siguientes son siempre FALSE:
DBCOLUMNFLAGS_CACHEDEFERRED
DBCOLUMNFLAGS_ISBOOKMARK
DBCOLUMNFLAGS_ISCHAPTER
DBCOLUMNFLAGS_ISLONG
DBCOLUMNFLAGS_ISROWID
DBCOLUMNFLAGS_ISROWVER
DBCOLUMNFLAGS_MAYDEFER
Se pueden establecer las marcas restantes (DBCOLUMNFLAGS_ISNULLABLE, DBCOLUMNFLAGS_MAYBENULL, DBCOLUMNFLAGS_WRITE y DBCOLUMNFLAGS_WRITEUNKNOWN), dependiendo de cómo se defina la columna y la consulta real.
Se proporciona una nueva marca DBCOLUMNFLAGS_SS_ISVARIABLESCALE en DBCOLUMN_FLAGS para permitir que una aplicación determine el tipo de servidor de columnas, donde DBCOLUMN_TYPE es DBTYPE_DBTIMESTAMP. DBCOLUMN_SCALE o DBCOLUMN_DATETIMEPRECISION también se debe usar para identificar el tipo de servidor.
DBCOLUMNFLAGS_SS_ISVARIABLESCALE solo es válido cuando se conecta a un servidor que ejecuta SQL Server 2008 (10.0.x) y versiones posteriores. DBCOLUMNFLAGS_SS_ISVARIABLESCALE no está definido cuando se conecta a servidores de nivel inferior.
IColumnsInfo::GetColumnInfo
La estructura DBCOLUMNINFO devuelve la información siguiente:
| Tipo de parámetro | wType | ulColumnSize | bPrecision | bScale |
dwFlags DBPARAMFLAGS_SS_ISVARIABLESCALE |
|---|---|---|---|---|---|
| date | DBTYPE_DBDATE | 6 | 10 | 0 | Desactivar |
| time(1..7) | DBTYPE_DBTIME2 | 10 | 8, 10..16 | 0..7 | Set |
| smalldatetime | DBTYPE_DBTIMESTAMP | 16 | 16 | 0 | Desactivar |
| datetime | DBTYPE_DBTIMESTAMP | 16 | 23 | 3 | Desactivar |
| datetime2 | DBTYPE_DBTIMESTAMP | 16 | 19, 21..27 | 0..7 | Set |
| datetimeoffset | DBTYPE_DBTIMESTAMPOFFSET | 20 | 26, 28..34 | 0..7 | Set |
En dwFlags, DBCOLUMNFLAGS_ISFIXEDLENGTH siempre es TRUE para los tipos de fecha y hora, y las marcas siguientes son siempre FALSE:
DBCOLUMNFLAGS_CACHEDEFERRED
DBCOLUMNFLAGS_ISBOOKMARK
DBCOLUMNFLAGS_ISCHAPTER
DBCOLUMNFLAGS_ISLONG
DBCOLUMNFLAGS_ISROWID
DBCOLUMNFLAGS_ISROWVER, MAYDEFER
Se pueden establecer las marcas restantes (DBCOLUMNFLAGS_ISNULLABLE, DBCOLUMNFLAGS_MAYBENULL, DBCOLUMNFLAGS_WRITE y DBCOLUMNFLAGS_WRITEUNKNOWN).
Se proporciona una nueva marca DBCOLUMNFLAGS_SS_ISVARIABLESCALE en dwFlags para permitir que una aplicación determine el tipo de servidor de columnas, donde wType es DBTYPE_DBTIMESTAMP. bScale también tiene que usarse para identificar el tipo de servidor.
Consulte también
Compatibilidad con tipos de datos para mejoras de fecha y hora de OLE DB