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] |
|
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. |
Voir aussi