datetime (Transact-SQL)
Définit une date qui est associée à une heure de la journée avec des fractions de seconde qui se présente au format 24 heures.
[!REMARQUE]
Utilisez les types de données time, date, datetime2 et datetimeoffset pour une nouvelle tâche. Ces types s'alignent sur la norme SQL. Ils sont plus portables. time, datetime2 et datetimeoffset offrent une meilleure précision à la seconde. datetimeoffset fournit la prise en charge des fuseaux horaires pour les applications globalement déployées.
Pour obtenir une vue d'ensemble de tous les types de données et fonctions de date et d'heure Transact-SQL, consultez Types de données et fonctions de date et d'heure (Transact-SQL). Pour obtenir des informations et des exemples communs aux types de données et fonctions de date et d'heure, consultez Utilisation des données de date et d'heure.
Description de datetime
Propriété |
Valeur |
---|---|
Syntaxe |
datetime |
Utilisation |
DECLARE @MyDatetime datetime CREATE TABLE Table1 ( Column1 datetime ) |
Formats de littéraux de chaîne par défaut (utilisé pour le client de bas niveau) |
Non applicable |
Plage de dates |
Du 1er janvier 1753 au 31 décembre 9999 |
Plage temporelle |
00:00:00 à 23:59:59.997 |
Plage de décalages de fuseau horaire |
Aucune |
Plages d'éléments |
AAAA comprend quatre chiffres, entre 1753 et 9999, qui représentent une année. MM comprend deux chiffres, entre 01 et 12, qui représentent un mois de l'année spécifiée. DD comprend deux chiffres, entre 01 et 31 selon le mois, qui représentent un jour du mois spécifié. hh comprend deux chiffres, entre 00 et 23, qui représentent l'heure. mm comprend deux chiffres, entre 00 et 59, qui représentent la minute. ss comprend deux chiffres, entre 00 et 59, qui représentent la seconde. n* comprend entre zéro et trois chiffres, entre 0 et 999, qui représentent les fractions de seconde. |
Longueur de caractère |
19 positions au minimum et 23 au maximum |
Taille de stockage |
8 octets |
Précision |
Arrondi aux incréments de ,000, ,003 ou ,007 secondes |
Valeur par défaut |
1900-01-01 00:00:00 |
Calendrier |
Grégorien (N'inclut pas la plage complète des années.) |
Précision à la fraction de seconde définie par l'utilisateur |
Non |
Prise en charge et conservation du décalage de fuseau horaire |
Non |
Prise en charge de l'heure d'été |
Non |
Formats de littéraux de chaîne pris en charge pour datetime
Les tableaux suivants répertorient les formats de littéraux de chaîne pris en charge pour datetime. Sauf pour ODBC, les littéraux de chaîne datetime sont encadrés par des guillemets simples ('), par exemple, 'string_literaL'. Si l'environnement n'est pas us_english, les littéraux de chaîne doivent se présenter au format N'string_literaL'.
Numérique |
Description |
---|---|
Formats de date : [0]4/15/[19]96 -- (mja) [0]4-15-[19]96 -- (mja) [0]4.15.[19]96 -- (mja) [0]4/[19]96/15 -- (maj) 15/[0]4/[19]96 -- (jma) 15/[19]96/[0]4 -- (jam) [19]96/15/[0]4 -- (ajm) [19]96/[0]4/15 -- (amj) Formats d'heure : 14:30 14:30[:20:999] 14:30[:20.9] 04:00 16:00 |
Vous pouvez spécifier les données de date à l'aide d'un mois spécifié sous forme numérique. Par exemple, 5/20/97 correspond au vingtième jour du mois de mai 1997. Lorsque vous utilisez un format de date numérique, spécifiez l'année, le mois et le jour dans une chaîne qui utilise des barres obliques (/), des traits d'union (-) ou des points (.) comme séparateurs. Cette chaîne doit apparaître sous la forme suivante :
Lorsque la langue sélectionnée est français, l'ordre par défaut pour la date est jma. Vous pouvez modifier l'ordre de la date à l'aide de l'instruction SET DATEFORMAT. Le paramètre de SET DATEFORMAT détermine l'interprétation des valeurs de date. Si l'ordre ne correspond pas au paramètre, les valeurs ne sont pas interprétées comme des dates (car elles sont hors limites) ou elles sont mal interprétées. Par exemple, 12/10/08 peut être interprété comme 6 dates différentes, selon le paramétrage de DATEFORMAT. Une année en quatre parties est interprétée comme l'année. |
Alphabétique |
Description |
---|---|
Avr[il] [15][,] 1996 Avr[il] 15[,] [19]96 Avr[il] 1996 [15] [15] Avr[il][,] 1996 15 Avr[il][,][19]96 15 [19]96 avr[il] [15] 1996 avr[il] 1996 AvR[IL] [15] 1996 [15] AVR[IL] |
Vous pouvez spécifier des données de date avec un mois spécifié comme nom complet du mois. Par exemple, Avril ou l'abréviation Avr spécifiée dans la langue actuelle ; les virgules sont facultatives et la mise en majuscules est ignorée. Instructions relatives à l'utilisation des formats de date alphabétiques :
Le paramètre de session SET DATEFORMAT n'est pas appliqué lorsque vous précisez le mois sous forme alphabétique. |
ISO 8601 |
Description |
---|---|
AAAA-MM-JJThh:mm:ss[.mmm] AAAAMMJJThh:mm:ss [.mmm] |
Exemples :
Pour respecter le format ISO 8601, vous devez spécifier chaque élément dans ce format. y compris T, le signe deux-points (:) et le point (.) qui y figurent. Les crochets indiquent que le composant fractions de seconde est facultatif. Le composant heure s'exprime au format 24 heures. Le T indique le début de la partie heure de la valeur datetime. Le format ISO 8601 présente un avantage de taille puisqu'il s'agit d'une norme internationale avec une spécification claire. Ce format n'est pas affecté par les paramètres SET DATEFORMAT ni SET LANGUAGE. |
Non séparé |
Description |
---|---|
AAAAMMJJ hh:mm:ss [.mmm] |
ODBC |
Description |
---|---|
{ ts '1998-05-02 01:23:56.123' } { d '1990-10-02' } { t '13:33:41' } |
L'API ODBC définit des séquences d'échappement pour représenter les valeurs de date et d'heure, ce qu'ODBC appelle des données timestamp. Ce format d'horodateur ODBC est également pris en charge par la définition de langage OLE DB (DBGUID-SQL) prise en charge par le fournisseur Microsoft OLE DB pour SQL Server. Les applications qui utilisent les API basées sur ADO, OLE DB et ODBC peuvent utiliser ce format d'horodateur ODBC pour représenter les dates et les heures. Les séquences d'échappement d'horodateur ODBC ont le format suivant : { literal_type 'constant_value' } :
|
Arrondi de la précision à la fraction de seconde datetime
Les valeurs datetime sont arrondies à des incréments de .000, .003 ou .007 secondes, comme cela est illustré dans le tableau suivant :
Valeur spécifiée par l'utilisateur |
Valeur stockée système |
---|---|
01/01/98 23:59:59.999 |
1998-01-02 00:00:00.000 |
01/01/98 23:59:59.995 01/01/98 23:59:59.996 01/01/98 23:59:59.997 01/01/98 23:59:59.998 |
1998-01-01 23:59:59.997 |
01/01/98 23:59:59.992 01/01/98 23:59:59.993 01/01/98 23:59:59.994 |
1998-01-01 23:59:59.993 |
01/01/98 23:59:59.990 01/01/98 23:59:59.991 |
1998-01-01 23:59:59.990 |
Conformité ANSI et ISO 8601
datetime n'est pas conforme ANSI ni ISO 8601.
Exemples
L'exemple suivant compare les résultats de la conversion d'une chaîne en chaque type de données de date et time.
SELECT
CAST('2007-05-08 12:35:29. 1234567 +12:15' AS time(7)) AS 'time'
,CAST('2007-05-08 12:35:29. 1234567 +12:15' AS date) AS 'date'
,CAST('2007-05-08 12:35:29.123' AS smalldatetime) AS
'smalldatetime'
,CAST('2007-05-08 12:35:29.123' AS datetime) AS 'datetime'
,CAST('2007-05-08 12:35:29. 1234567 +12:15' AS datetime2(7)) AS
'datetime2'
,CAST('2007-05-08 12:35:29.1234567 +12:15' AS datetimeoffset(7)) AS
'datetimeoffset';
Voici l'ensemble des résultats.
Type de données |
Sortie |
---|---|
time |
12:35:29. 1234567 |
date |
2007-05-08 |
smalldatetime |
2007-05-08 12:35:00 |
datetime |
2007-05-08 12:35:29.123 |
datetime2 |
2007-05-08 12:35:29. 1234567 |
datetimeoffset |
2007-05-08 12:35:29.1234567 +12:15 |