Mejoras de fecha y hora de SQL Server Native Client
Se aplica a: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)
Importante
SQL Server Native Client (SNAC) no se incluye con:
- SQL Server 2022 (16.x) y versiones posteriores
- SQL Server Management Studio 19 y versiones posteriores
Sql Server Native Client (SQLNCLI o SQLNCLI11) y el proveedor MICROSOFT OLE DB heredado para SQL Server (SQLOLEDB) no se recomiendan para el desarrollo de aplicaciones nuevas.
En el caso de los proyectos nuevos, use uno de los siguientes controladores:
Para SQLNCLI que se incluye como componente de motor de base de datos de SQL Server (versiones 2012 a 2019), consulte esta excepción de ciclo de vida de soporte técnico.
En este tema se describe la compatibilidad de SQL Server Native Client con los tipos de datos de fecha y hora que se agregaron en SQL Server 2008 (10.0.x).
Para obtener más información sobre las mejoras de fecha y hora, vea Mejoras de fecha y hora (OLE DB) y Mejoras de fecha y hora (ODBC).
Uso
En las secciones siguientes se describen varios modos de usar los nuevos tipos de fecha y hora.
Usar date como un tipo de datos distinto
A partir de SQL Server 2008 (10.0.x), la compatibilidad mejorada con tipos de fecha y hora hace que sea más eficaz usar el tipo ODBC de SQL_TYPE_DATE (SQL_DATE para aplicaciones ODBC 2.0) y el tipo OLE DB de DBTYPE_DBDATE.
Usar time como un tipo de datos distinto
OLE DB ya tiene un tipo de datos que solamente contiene la hora, DBTYPE_DBTIME, que ofrece una precisión de 1 segundo. En ODBC, el tipo equivalente es SQL_TYPE_TIME (SQL_TIME para aplicaciones ODBC 2.0).
El nuevo tipo de datos de hora de SQL Server tiene una precisión de 100 nanosegundos para las fracciones de segundo. Esto requiere nuevos tipos en SQL Server Native Client: DBTYPE_DBTIME2 (OLE DB) y SQL_SS_TIME2 (ODBC). Las aplicaciones existentes escritas para utilizar horas sin fracciones de segundo pueden utilizar columnas time(0). Los tipos existentes DBTYPE_TIME de OLE DB y SQL_TYPE_TIME de ODBC y sus estructuras correspondientes deben funcionar correctamente, a menos que las aplicaciones se basen en el tipo devuelto en los metadatos.
Usar time como un tipo de datos distinto con una precisión ampliada para las fracciones de segundo
Algunas aplicaciones, como las aplicaciones de fabricación y control de procesos, exigen la capacidad de controlar los datos de hora con una precisión de hasta 100 nanosegundos. Para este propósito, se han introducido los nuevos tipos DBTYPE_DBTIME2 (OLE DB) y SQL_SS_TIME2 (ODBC).
Usar el tipo datetime con una precisión ampliada para las fracciones de segundo
OLE DB ya define un tipo con una precisión de hasta 1 nanosegundo. Sin embargo, este tipo ya se utiliza en aplicaciones SQL Server existentes y estas aplicaciones tienen una expectativa de tan solo 1/300 de precisión en segundos. El nuevo tipo datetime2(3) no es directamente compatible con el tipo datetime existente. Si existe el riesgo de que esto afecte al comportamiento de la aplicación, las aplicaciones deben utilizar una nueva marca DBCOLUMN para determinar el tipo de servidor real.
ODBC también define un tipo con una precisión de hasta 1 nanosegundo. Sin embargo, las aplicaciones de SQL Server existentes ya usan este tipo y estas aplicaciones esperan solo una precisión de 3 milisegundos. El nuevo tipo datetime2(3) no es compatible directamente con el tipo datetime existente. datetime2(3) tiene una precisión de un milisegundo y datetime tiene una precisión de 1/300 de un segundo. En ODBC, las aplicaciones pueden determinar qué tipo de servidor se está usando con el campo descriptor SQL_DESC_TYPE_NAME. Por lo tanto, el tipo SQL_TYPE_TIMESTAMP existente (SQL_TIMESTAMP para aplicaciones ODBC 2.0) puede utilizarse con ambos tipos.
Usar el tipo datetime con una precisión ampliada para las fracciones de segundo y la zona horaria
Algunas aplicaciones requieren valores de fecha y hora con información de zona horaria. Los nuevos tipos DBTYPE_DBTIMESTAMPOFFSET (OLE DB) y SQL_SS_TIMESTAMPOFFSET (ODBC) admiten este uso.
Usar datos de tipo date/time/datetime/datetimeoffset con conversiones de cliente coherentes con las conversiones existentes
El estándar ODBC describe cómo funcionan las conversiones entre los tipos date, time y timestamp existentes. Se extienden de forma coherente para incluir conversiones entre todos los tipos de fecha y hora introducidos en SQL Server 2008 (10.0.x).