Améliorations de la date/de l'heure
Cette rubrique décrit la prise en charge par SQL Server Native Client 10.0 des nouveaux types de données de date et d'heure ajoutés à SQL Server 2008.
Pour plus d'informations sur les améliorations apportées en matière de date et d'heure, consultez Améliorations des types de données de date et d'heure (OLE DB) et Améliorations de la date et de l'heure (ODBC).
Pour plus d'informations sur les exemples d'applications qui illustrent cette fonctionnalité, consultez Considérations relatives à l'installation d'exemples de bases de données et d'exemples de code SQL Server.
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
À partir de SQL Server 2008, l'amélioration de la prise en charge des types date/heure rend plus efficace l'utilisation du type SQL_TYPE_DATE ODBC (SQL_DATE pour les applications ODBC 2.0) et du type DBTYPE_DBDATE OLE DB.
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 time de SQL Server a une précision en fractions de seconde de 100 nanosecondes. Cela requiert 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, lesquelles attendent une précision de 3 millisecondes uniquement. 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. Ceux-ci sont étendus de manière cohérente afin d'inclure les conversions entre tous les types relatifs à la date et à l'heure introduits dans SQL Server 2008.