SQL Server Native Client Améliorations apportées à la date et à l’heure

S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

Important

SQL Server Native Client (souvent abrégé en SNAC) a été supprimé dans SQL Server 2022 (16.x) et SQL Server Management Studio 19 (SSMS). SQL Server Native Client (SQLNCLI ou SQLNCLI11) et le fournisseur Microsoft OLE DB pour SQL Server (SQLOLEDB) hérité ne sont pas recommandés dans les nouveaux développements. Utilisez à la place le nouveau Microsoft OLE DB Driver (MSOLEDBSQL) pour SQL Server ou le Microsoft ODBC Driver for SQL Server le plus récent. Pour SQLNCLI fourni en tant que composant du moteur de base de données SQL Server (versions 2012 à 2019), consultez cette exception de cycle de vie de support.

Cette rubrique décrit la prise en charge SQL Server Native Client des types de données de date et d’heure qui ont été ajoutés dans SQL Server 2008 (10.0.x).

Pour plus d’informations sur les améliorations de date/heure, consultez Améliorations de date et d’heure (OLE DB) et Améliorations de date et d’heure (ODBC).

Usage

Les sections suivantes décrivent les différentes façons d'utiliser les nouveaux types de date et d'heure.

Utiliser le type Date comme type de données distinct

À compter de SQL Server 2008 (10.0.x), la prise en charge améliorée des types date/heure rend plus efficace l’utilisation du type ODBC SQL_TYPE_DATE (SQL_DATE pour les applications ODBC 2.0) et du type OLE DB DBTYPE_DBDATE.

Utiliser le type Time comme type de données distinct

OLE DB a déjà un type de données qui contient juste l'heure, DBTYPE_DBTIME, avec une précision de 1 seconde. Dans ODBC, le type équivalent est SQL_TYPE_TIME (SQL_TIME pour les applications ODBC 2.0).

Le nouveau type de données d’heure SQL Server a une précision en fractions de seconde de 100 nanosecondes. Cela nécessite de nouveaux types dans SQL Server Native Client : DBTYPE_DBTIME2 (OLE DB) et SQL_SS_TIME2 (ODBC). Les applications existantes écrites pour utiliser des heures sans fractions de seconde peuvent recourir à des colonnes time(0). Les types OLE DB DBTYPE_TIME et ODBC SQL_TYPE_TIME, ainsi que leurs structs correspondants, doivent fonctionner correctement, à moins que les applications ne reposent sur le type retourné dans les métadonnées.

Utiliser le type Time comme type de données distinct avec l'extension de la précision en fractions de seconde

Certaines applications, telles que les applications de contrôle de processus et de fabrication, requièrent la possibilité de gérer les données d'heure avec une précision allant jusqu'à 100 nanosecondes. Les nouveaux types répondant à cet objectif sont DBTYPE_DBTIME2 (OLE DB) et SQL_SS_TIME2 (ODBC).

Utiliser le type Datetime avec l'extension de la précision en fractions de seconde

OLE DB définit déjà un type avec une précision allant jusqu'à 1 nanoseconde. Toutefois, ce type est déjà utilisé par les applications SQL Server existantes, lesquelles attendent une précision de 1/300 de seconde uniquement. Le nouveau type datetime2(3) n’est pas directement compatible avec le type datetime existant. S'il existe un risque que cela affecte le comportement des applications, celles-ci doivent utiliser un nouvel indicateur DBCOLUMN pour déterminer le type réel sur le serveur.

ODBC définit également un type avec une précision allant jusqu'à 1 nanoseconde. Toutefois, ce type est déjà utilisé par les applications SQL Server existantes et ces applications n’attendent que 3 millisecondes de précision. Le nouveau type datetime2(3) n’est pas directement compatible avec le type datetime existant. datetime2(3) a une précision d’une milliseconde, et datetime a une précision de 1/300 de seconde. Dans ODBC, les applications peuvent déterminer le type serveur en cours d'utilisation avec le champ de descripteur SQL_DESC_TYPE_NAME. Par conséquent, le type existant SQL_TYPE_TIMESTAMP (SQL_TIMESTAMP pour les applications ODBC 2.0) peut être utilisé pour les deux types.

Utiliser le type Datetime avec l'extension de la précision en fractions de seconde et le fuseau horaire

Certaines applications requièrent des valeurs datetime avec les informations de fuseau horaire. Cela est pris en charge par les nouveaux types DBTYPE_DBTIMESTAMPOFFSET (OLE DB) et SQL_SS_TIMESTAMPOFFSET (ODBC).

Utiliser les données de type Date/Time/Datetime/Datetimeoffset avec des conversions côté client cohérentes avec les conversions existantes

La norme ODBC décrit le fonctionnement des conversions entre les types date, time et timestamp existants. Ils sont étendus de manière cohérente pour inclure les conversions entre tous les types de date et d’heure introduits dans SQL Server 2008 (10.0.x).

Voir aussi

Fonctionnalités de SQL Server Native Client