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
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de