datetimeoffset (Transact-SQL)
Définit une date qui est associée à une heure de la journée qui prend 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 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 datetimeoffset
Propriété |
Valeur |
---|---|
Syntaxe |
datetimeoffset [ (fractional seconds precision) ] |
Utilisation |
DECLARE @MyDatetimeoffset datetimeoffset(7) CREATE TABLE Table1 ( Column1 datetimeoffset(7) ) |
Formats de littéraux de chaîne par défaut (utilisés pour le client de bas niveau) |
AAAA-MM-JJ hh:mm:ss[.nnnnnnn] [{+|-}hh:mm] 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 de dates |
0001-01-01 à 9999-12-31 Du 1er janvier de l'an 1 au 31 décembre 9999 |
Plage temporelle |
00:00:00 à 23:59:59.9999999 |
Plage de décalages de fuseau horaire |
|
Plages d'éléments |
AAAA comprend quatre chiffres, entre 0001 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 sept chiffres, entre 0 et 9999999, qui représentent les fractions de seconde. hh comprend deux chiffres, entre -14 et +14. mm comprend deux chiffres, entre 00 et 59. |
Longueur de caractère |
26 positions au minimum (AAAA-MM-JJ hh:mm:ss {+|-}hh:mm) et 34 au maximum (AAAA-MM-JJ hh:mm:ss.nnnnnnn {+|-}hh:mm) |
Précision, échelle |
Échelle spécifiéeRésultat (précision, échelle)Longueur de colonne (octets)Précision en fractions de seconde
datetimeoffset (34,7)107
datetimeoffset(0) (26,0)80-2
datetimeoffset(1) (28,1)80-2
datetimeoffset(2) (29,2)80-2
datetimeoffset(3) (30,3)93-4
datetimeoffset(4) (31,4)93-4
datetimeoffset(5) (32,5)105-7
datetimeoffset(6) (33,6)105-7
datetimeoffset(7) (34,7)105-7
|
Taille de stockage |
10 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 |
1900-01-01 00:00:00 00:00 |
Calendrier |
Grégorien |
Précision à la fraction de seconde définie par l'utilisateur |
Oui |
Prise en charge et conservation du décalage de fuseau horaire |
Oui |
Prise en charge de l'heure d'été |
Non |
Formats de littéraux de chaîne pris en charge pour datetimeoffset
Le tableau suivant répertorie les formats de littéraux de chaîne ISO 8601 pris en charge pour datetimeoffset. Pour plus d'informations sur les formats alphabétique, numérique, non séparé et d'heure pour les parties de date et d'heure de datetimeoffset, consultez date (Transact-SQL) et time (Transact-SQL).
ISO 8601 |
Description |
---|---|
AAAA-MM-JJThh:mm:ss[.nnnnnnn][{+|-}hh:mm] |
Ces deux formats ne sont pas affectés par les paramètres régionaux de session SET LANGUAGE et SET DATEFORMAT. Les espaces ne sont pas autorisés entre les éléments datetimeoffset et datetime. |
AAAA-MM-JJThh:mm:ss[.nnnnnnn]Z (UTC) |
Ce format par définition ISO indique que la partie datetime doit être exprimée dans le fuseau horaire UTC. Par exemple, 1999-12-12 12:30:30.12345 -07:00 doit être représenté sous la forme 1999-12-12 19:30:30.12345Z. |
Décalage de fuseau horaire
Un décalage de fuseau horaire spécifie le décalage de la zone de fuseau horaire UTC pour une valeur time ou datetime. Le décalage de fuseau horaire peut être représenté sous la forme [+|-] hh:mm:
hh comprend deux chiffres, entre 00 et 14, qui représentent le nombre d'heures dans le décalage de fuseau horaire.
mm comprend deux chiffres, entre 00 et 59, qui représentent le nombre de minutes supplémentaires dans le décalage de fuseau horaire.
+ (plus) ou – (moins) est le signe obligatoire d'un décalage de fuseau horaire. Cela indique si le décalage de fuseau horaire est ajouté au temps universel coordonné ou soustrait de celui-ci pour obtenir l'heure locale. La plage valide du décalage de fuseau horaire se situe entre -14:00 et +14:00.
La plage des décalages de fuseau horaire respecte la norme XML W3C pour la définition de schéma XSD et est légèrement différente de la définition de la norme SQL 2003, 12:59 à +14:00.
Le paramètre de type facultatif fractional seconds precision spécifie le nombre de chiffres pour la partie fractionnaire des secondes. Cette valeur peut être un entier avec 0 à 7 chiffres (100 nanosecondes). La fractional seconds precision par défaut est 100 ns (sept chiffres pour la partie fractionnaire des secondes).
Les données sont stockées dans la base de données, puis traitées, comparées, triées et indexées sur le serveur comme au format UTC. Le décalage de fuseau horaire sera conservé dans la base de données pour récupération.
Le décalage de fuseau horaire donné sera supposé prendre en charge l'heure d'été et être réglé pour tout datetime donné situé dans la période d'observation de l'heure d'été.
Pour le type datetimeoffset, les valeurs datetime UTC et locale (pour le décalage de fuseau horaire persistant ou préservé) seront validées lors des opérations d'insertion, de mise à jour, arithmétique, de conversion ou d'attribution. La détection de toute valeur datetime UTC ou locale non valide (pour le décalage de fuseau horaire persistant ou préservé) déclenchera une erreur de valeur non valide. Par exemple, 9999-12-31 10:10:00 est valide au format UTC, mais déborde en heure locale sur le décalage de fuseau horaire +13:50.
Conformité ANSI et ISO 8601
Les sections relatives à la conformité ANSI et ISO 8601 des rubriques date et time s'appliquent à datetimeoffset.
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'
,CAST('2007-05-08 12:35:29.1234567+12:15' AS datetimeoffset(7)) AS
'datetimeoffset IS08601';
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