time (Transact-SQL)

Définit une heure d'un jour. L'heure ne prend pas en charge les fuseaux horaires et se présente au format 24 heures.

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 time

Propriété

Valeur

Syntaxe

time [ (fractional second precision) ]

Utilisation

DECLARE @MyTime time(7)

CREATE TABLE Table1 ( Column1 time(7) )

fractional seconds precision

Spécifie le nombre de chiffres pour la partie fractionnaire des secondes.

Il peut s'agir d'un entier compris entre 0 et 7.

La précision fractionnaire par défaut est 7 (100 ns).

Utilisation

DECLARE @MyTime time(7)

CREATE TABLE Table1 ( Column1 time(7) )

Format de littéral de chaîne par défaut

(utilisé pour le client de bas niveau)

hh:mm:ss [.nnnnnnn]

Pour plus d'informations, consultez la section « Compatibilité descendante pour les clients de bas niveau » de Utilisation des données de date et d'heure.

Plage

00:00:00.0000000 à 23:59:59.9999999

Plages d'éléments

hh comprend deux chiffres, entre 0 et 23, qui représentent l'heure.

mm comprend deux chiffres, entre 0 et 59, qui représentent la minute.

ss comprend deux chiffres, entre 0 et 59, qui représentent la seconde.

n* comprend entre zéro et sept chiffres, entre 0 et 9999999, qui représentent les fractions de seconde.

Longueur de caractère

8 positions au minimum (hh:mm:ss) à 16 au maximum (hh:mm:ss.nnnnnnn)

Précision, échelle

(l'utilisateur spécifie l'échelle uniquement)

Échelle spécifiéeRésultat (précision, échelle)Longueur de colonne (octets)Fraction secondes précision
time (16,7)57
time(0) (8,0)30-2
time(1) (10,1)30-2
time(2) (11,2)30-2
time(3) (12,3)43-4
time(4) (13,4)43-4
time(5) (14,5)55-7
time(6) (15,6)55-7
time(7) (16,7)55-7

Taille de stockage

5 octets, fixes, sont la valeur par défaut avec une précision à la fraction de seconde de 100 ns par défaut.

Précision

100 nanosecondes

Valeur par défaut

00:00:00

Cette valeur est utilisée pour la partie heure ajoutée pour la conversion implicite de date en datetime2 ou datetimeoffset.

Précision à la fraction de seconde définie par l'utilisateur

Oui

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 l'heure

Le tableau suivant affiche les formats de littéraux de chaîne valides pour le type de données time.

SQL Server

Description

hh:mm[:ss][:fractions de seconde][AM][PM]

hh:mm[:ss][.fractions de seconde][AM][PM]

hhAM[PM]

hh AM[PM]

La valeur d'heure 0 représente l'heure après minuit (AM), que l'élément AM soit ou non spécifié. PM ne peut pas être spécifié quand l'heure est égale à 0.

Les valeurs d'heure comprises entre 01 et 11 représentent les heures avant midi si ni AM ni PM n'est spécifié. Elles représentent les heures avant midi si AM est spécifié et les heures après midi si PM est spécifié.

La valeur 12 pour les heures représente l'heure qui démarre à midi si ni AM ni PM n'est spécifié. Elle représente l'heure qui démarre à minuit si AM est spécifié et l'heure qui démarre à midi si PM est spécifié. Par exemple, 12:01 correspond à 1 minute après midi, comme 12:01 PM, alors que 12:01 AM équivaut à 1 minute après minuit. La spécification de 12:01 AM équivaut à 00:01 ou 00:01 AM.

Les heures situées entre 13 et 23 représentent les heures après midi si ni AM ni PM n'est spécifié. Elles représentent également les heures après midi si PM est spécifié. Vous ne pouvez pas spécifier AM lorsque la valeur d'heure est comprise entre 13 et 23.

Une valeur d'heure de 24 n'est pas valide. Pour représenter minuit, utilisez 12:00 AM ou 00:00.

Les millisecondes peuvent être précédées du signe deux-points (:) ou d'un point (.). Si le signe deux-points est utilisé, il s'agit de millièmes de secondes. Précédé d'un point, un chiffre unique représente un dixième de seconde, deux chiffres un centième et trois chiffres un millième. Par exemple, 12:30:20:1 indique 20 secondes et un millième après 12:30 ; 12:30:20.1 indique 20 secondes et un dixième après 12:30.

ISO 8601

Remarques

hh:mm:ss

hh:mm[:ss][.fractions de seconde]

  • hh comprend deux chiffres, entre 0 et 14, qui représentent le nombre d'heures dans le décalage de fuseau horaire.

  • mm comprend deux chiffres, entre 0 et 59, qui représentent le nombre de minutes supplémentaires dans le décalage de fuseau horaire.

ODBC

Remarques

{t 'hh:mm:ss[.fractions de seconde]'}

Spécifique à l'API ODBC.

Fonctionne dans SQL Server 2008 comme dans SQL Server 2005.

Conformité de time avec les normes ANSI et ISO 8601

L'utilisation de l'heure 24 pour représenter minuit et du saut de seconde au-delà de 59 comme défini par ISO 8601 (5.3.2 et 5.3) n'est pas prise en charge comme étant à compatibilité descendante et cohérente avec les types de date et d'heure existants. Ils ne sont pas définis par la norme 2003 de SQL.

Le format de littéral de chaîne par défaut (utilisé pour le client de bas niveau) s'alignera avec le format standard SQL qui est défini comme hh:mm:ss[.nnnnnnn]. Ce format ressemble à la définition ISO 8601 pour TIME à l'exclusion des fractions de seconde.

Exemples

A. Comparaison des types de données de date et d'heure

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';

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

B. Insertion de littéraux de chaîne d'heure valides dans une colonne time(7)

Le tableau suivant répertorie différents littéraux de chaîne qui peuvent être insérés dans une colonne de type de données time(7) avec les valeurs qui sont ensuite stockées dans cette colonne.

Type de format du littéral de chaîne

Littéral de chaîne inséré

Valeur time(7) qui est stockée

Description

SQL Server

'01:01:01:123AM'

01:01:01.1230000

Lorsqu'un signe deux-points (:) précède la précision en fractions de seconde, l'échelle ne peut pas dépasser trois positions ou une erreur sera déclenchée.

SQL Server

'01:01:01.1234567 AM'

01:01:01.1234567

Lorsque l'élément AM ou PM est spécifié, l'heure est stockée au format 24 heures sans le littéral AM ou PM

SQL Server

'01:01:01.1234567 PM'

13:01:01.1234567

Lorsque l'élément AM ou PM est spécifié, l'heure est stockée au format 24 heures sans le littéral AM ou PM

SQL Server

'01:01:01.1234567PM'

13:01:01.1234567

Un espace avant AM ou PM est facultatif.

SQL Server

'01AM'

01:00:00.0000000

Lorsque seule l'heure est spécifiée, toutes les autres valeurs sont égales à 0.

SQL Server

'01 AM'

01:00:00.0000000

Un espace avant AM ou PM est facultatif.

SQL Server

'01:01:01'

01:01:01.0000000

Lorsque la précision en fractions de seconde n'est pas spécifiée, chaque position qui est définie par le type de données est égale à 0.

ISO 8601

'01:01:01.1234567'

01:01:01.1234567

Pour la conformité avec ISO 8601, utilisez le format 24 heures, et non AM ou PM.

ISO 8601

'01:01:01.1234567 +01:01'

01:01:01.1234567

La différence de fuseau horaire facultative (TZD) est autorisée dans l'entrée, mais n'est pas stockée.

C. Insertion du littéral de chaîne d'heure dans les colonnes de chaque type de données de date et d'heure

Dans le tableau suivant, la première colonne affiche un littéral de chaîne d'heure à insérer dans une colonne de table de base de données du type de données de date et d'heure indiqué dans la deuxième colonne. La troisième colonne affiche la valeur qui sera stockée dans la colonne de table de base de données.

Littéral de chaîne inséré

Type de données de la colonne

Valeur qui est stockée dans la colonne

Description

'12:12:12.1234567'

time(7)

12:12:12.1234567

Si la précision en fractions de seconde dépasse la valeur spécifiée pour la colonne, la chaîne sera tronquée sans erreur.

'2007-05-07'

date

NULL

Toute valeur d'heure provoquera l'échec de l'instruction INSERT.

'12:12:12'

smalldatetime

1900-01-01 12:12:00

Toute valeur de précision en fractions de seconde provoquera l'échec de l'instruction INSERT.

'12:12:12.123'

datetime

1900-01-01 12:12:12.123

Toute précision de seconde supérieure à trois positions provoquera l'échec de l'instruction INSERT.

'12:12:12.1234567'

datetime2(7)

1900-01-01 12:12:12.1234567

Si la précision en fractions de seconde dépasse la valeur spécifiée pour la colonne, la chaîne sera tronquée sans erreur.

'12:12:12.1234567'

datetimeoffset(7)

1900-01-01 12:12:12.1234567 +00:00

Si la précision en fractions de seconde dépasse la valeur spécifiée pour la colonne, la chaîne sera tronquée sans erreur.