Partager via


Améliorations de date et d’heure sql Server Native Client

S’applique à : SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)

Important

SQL Server Native Client (SNAC) n’est pas fourni avec :

  • 2022 - SQL Server 16 (16.x) et versions ultérieures
  • SQL Server Management Studio 19 et versions ultérieures

SQL Server Native Client (SQLNCLI ou SQLNCLI11) et le fournisseur Microsoft OLE DB hérité pour SQL Server (SQLOLEDB) ne sont pas recommandés pour le nouveau développement d’applications.

Pour les nouveaux projets, utilisez l'un des pilotes suivants :

Pour SQLNCLI qui est fourni en tant que composant du moteur de base de données SQL Server (versions 2012 à 2019), consultez cette exception du cycle de vie du support.

Cette rubrique décrit la prise en charge de SQL Server Native Client pour les types de données de date et d’heure 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).

Utilisation

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 permet d’utiliser le type ODBC SQL_TYPE_DATE (SQL_DATE pour les applications ODBC 2.0) et le 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 s’attendent à une précision de 3 millisecondes. 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 d’une 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. Elles sont étendues 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