Partager via


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 :

  • numéro séparateur numéro séparateur numéro [heure] [heure]

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 :

  • Placez la date et l'heure entre des guillemets simples ('). Pour les langues autres que l'anglais, utilisez N'

  • Les caractères placés entre crochets sont facultatifs.

  • Si vous spécifiez uniquement les deux derniers chiffres de l'année, les valeurs inférieures aux deux derniers chiffres de la valeur de l'option de configuration d'année de coupure à deux chiffres appartiennent au même siècle que l'année de troncature. Les valeurs supérieures ou égales à la valeur de cette option appartiennent au siècle qui précède l'année de troncature. Par exemple, si l'option d'année de coupure à deux chiffres a pour valeur 2050 (valeur par défaut), 25 est interprété comme 2025 et 50 est interprété comme 1950. Pour éviter toute ambiguïté, représentez les années à l'aide de quatre chiffres.

  • Si le jour n'est pas précisé, le premier jour du mois est rajouté.

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 :

  • 2004-05-23T14:25:10

  • 2004-05-23T14:25:10.487

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' } :

  • literal_type spécifie le type de séquence d'échappement. Le type timestamp a trois spécificateurs de literal_type :

    • d = date uniquement

    • t = heure uniquement

    • ts = timestamp (heure + date)

  • 'constant_value' est la valeur de la séquence d'échappement. constant_value doit respecter les formats suivants pour chaque literal_type.

    literal_typeFormat constant_value
    d aaaa-mm-jj
    t hh:mm:ss[,fff]
    ts aaaa-mm-jj hh:mm:ss[.fff]

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

Voir aussi

Référence