Compartir a través de


Compatibilidad con sql_variant para tipos de fecha y hora

Se aplica a: SQL Server Azure SQL Database Azure SQL Instancia administrada Azure Synapse Analytics Analytics Platform System (PDW)

En este tema se describe cómo el tipo de datos sql_variant admite la funcionalidad mejorada de fecha y hora.

El atributo de columna SQL_CA_SS_VARIANT_TYPE se usa para devolver el tipo C de una columna de resultados variant. SQL Server 2008 (10.0.x) presenta un atributo adicional, SQL_CA_SS_VARIANT_SQL_TYPE, que establece el tipo SQL de una columna de resultado variante en el descriptor de fila de implementación (IRD). SQL_CA_SS_VARIANT_SQL_TYPE también se puede usar en el descriptor de parámetros de implementación (IPD) para especificar el tipo SQL de un parámetro de SQL_SS_TIME2 o SQL_SS_TIMESTAMPOFFSET que tiene SQL_C_BINARY tipo de C enlazado con el tipo SQL_SS_VARIANT.

SQLColAttribute puede establecer los nuevos tipos SQL_SS_TIME2 y SQL_SS_TIMESTAMPOFFSET. SQLGetDescField puede devolver SQL_CA_SS_VARIANT_SQL_TYPE.

Para las columnas de resultados, el controlador convertirá el tipo variant en un tipo de fecha y hora. Para obtener más información, vea Conversiones de SQL a C. Al enlazar a SQL_C_BINARY, la longitud del búfer debe ser lo suficientemente grande como para recibir la estructura que corresponde al tipo SQL.

Para los parámetros SQL_SS_TIME2 y SQL_SS_TIMESTAMPOFFSET, el controlador convertirá los valores de C en valores de sql_variant , como se describe en la tabla siguiente. Si un parámetro se enlaza como SQL_C_BINARY y el tipo de servidor es SQL_SS_VARIANT, se considerará como un valor binario a menos que la aplicación haya establecido SQL_CA_SS_VARIANT_SQL_TYPE en un otro tipo SQL. En este caso, SQL_CA_SS_VARIANT_SQL_TYPE tiene prioridad; es decir, si se establece SQL_CA_SS_VARIANT_SQL_TYPE, invalida el comportamiento predeterminado de deducir el tipo variant de SQL a partir del tipo de C.

Tipo de C Tipo de servidor Comentarios
SQL_C_CHAR varchar Se omite SQL_CA_SS_VARIANT_SQL_TYPE.
SQL_C_WCHAR nvarcar Se omite SQL_CA_SS_VARIANT_SQL_TYPE.
SQL_C_TINYINT smallint Se omite SQL_CA_SS_VARIANT_SQL_TYPE.
SQL_C_STINYINT smallint Se omite SQL_CA_SS_VARIANT_SQL_TYPE.
SQL_C_SHORT smallint Se omite SQL_CA_SS_VARIANT_SQL_TYPE.
SQL_C_SSHORT smallint Se omite SQL_CA_SS_VARIANT_SQL_TYPE.
SQL_C_USHORT int Se omite SQL_CA_SS_VARIANT_SQL_TYPE.
SQL_C_LONG int Se omite SQL_CA_SS_VARIANT_SQL_TYPE.
SQL_C_SLONG int Se omite SQL_CA_SS_VARIANT_SQL_TYPE.
SQL_C_ULONG bigint Se omite SQL_CA_SS_VARIANT_SQL_TYPE.
SQL_C_SBIGINT bigint Se omite SQL_CA_SS_VARIANT_SQL_TYPE.
SQL_C_FLOAT real Se omite SQL_CA_SS_VARIANT_SQL_TYPE.
SQL_C_DOUBLE flotante Se omite SQL_CA_SS_VARIANT_SQL_TYPE.
SQL_C_BIT bit Se omite SQL_CA_SS_VARIANT_SQL_TYPE.
SQL_C_UTINYINT tinyint Se omite SQL_CA_SS_VARIANT_SQL_TYPE.
SQL_C_BINARY varbinary No se establece SQL_CA_SS_VARIANT_SQL_TYPE.
SQL_C_BINARY time SQL_CA_SS_VARIANT_SQL_TYPE = SQL_SS_TIME2

La escala se establece en SQL_DESC_PRECISION (el parámetro DecimalDigits de SQLBindParameter).
SQL_C_BINARY datetimeoffset SQL_CA_SS_VARIANT_SQL_TYPE = SQL_SS_TIMESTAMPOFFSET

La escala se establece en SQL_DESC_PRECISION (el parámetro DecimalDigits de SQLBindParameter).
SQL_C_TYPE_DATE date Se omite SQL_CA_SS_VARIANT_SQL_TYPE.
SQL_C_TYPE_TIME time(0) Se omite SQL_CA_SS_VARIANT_SQL_TYPE.
SQL_C_TYPE_TIMESTAMP datetime2 La escala se establece en SQL_DESC_PRECISION (el parámetro DecimalDigits de SQLBindParameter).
SQL_C_NUMERIC decimal Precision se establece en SQL_DESC_PRECISION (el parámetro ColumnSize de SQLBindParameter).

Conjunto de escalado en SQL_DESC_SCALE (el parámetro DecimalDigits de SQLBindParameter).
SQL_C_SS_TIME2 time Se ignora SQL_CA_SS_VARIANT_SQL_TYPE.
SQL_C_SS_TIMESTAMPOFFSET datetimeoffset Se ignora SQL_CA_SS_VARIANT_SQL_TYPE.

Consulte también

Mejoras en la fecha y la hora (ODBC)