datetimeoffset (Transact-SQL)

Definiert ein auf dem 24-Stunden-Format basierendes Datum, das mit einer Uhrzeit kombiniert ist, bei der die Zeitzone beachtet wird.

Eine Übersicht über alle Datums- und Uhrzeitdatentypen und die zugehörigen Funktionen von Transact-SQL finden Sie unter Datums- und Uhrzeitdatentypen und zugehörige Funktionen (Transact-SQL). Informationen und Beispiele, die für alle Datums- und Uhrzeitdatentypen und zugehörige Funktionen gelten, finden Sie unter Verwenden von Datums- und Zeitdaten.

Beschreibung von datetimeoffset

Eigenschaft

Wert

Syntax

datetimeoffset [ (fractional seconds precision) ]

Verwendung

DECLARE @MyDatetimeoffset datetimeoffset(7)

CREATE TABLE Table1 ( Column1 datetimeoffset(7) )

Standardmäßige Formate der Zeichenfolgenliterale (wird für Downlevelclients verwendet)

YYYY-MM-DD hh:mm:ss[.nnnnnnn] [{+|-}hh:mm]

Weitere Informationen finden Sie im Abschnitt "Abwärtskompatibilität für Downlevelclients" unter Verwenden von Datums- und Zeitdaten.

Datumsbereich

0001-01-01 bis 9999-12-31

Zwischen dem 1. Januar 1 n. Chr. und dem 31. Dezember 9999 n. Chr.

Zeitbereich

00:00:00 bis 23:59:59.9999999

Zeitzonenoffsetbereich

  • -14:00 bis +14:00

Elementbereiche

Bei YYYY handelt es sich um vier Ziffern im Bereich von 0001 bis 9999, die ein Jahr darstellen.

Bei MM handelt es sich um zwei Ziffern im Bereich von 01 bis 12, die im angegebenen Jahr einen Monat darstellen.

Bei DD handelt es sich um zwei Ziffern im Bereich von 01 bis 31, die im angegebenen Monat einen Tag darstellen.

Bei hh handelt es sich um zwei Ziffern im Bereich von 00 bis 23, die die Stunde darstellen.

Bei mm handelt es sich um zwei Ziffern im Bereich von 00 bis 59, die die Minute darstellen.

Bei ss handelt es sich um zwei Ziffern im Bereich von 00 bis 59, die die Sekunde darstellen.

Bei n* handelt es sich um sieben Ziffern im Bereich von 0 bis 9999999, die die Sekundenbruchteile darstellen.

Bei hh handelt es sich um zwei Ziffern im Bereich von -14 bis +14.

Bei mm handelt es sich um zwei Ziffern im Bereich von 00 bis 59.

Zeichenlänge

Mindestens 26 Positionen (YYYY-MM-DD hh:mm:ss {+|-}hh:mm) bis maximal 34 Positionen (YYYY-MM-DD hh:mm:ss.nnnnnnn {+|-}hh:mm)

Genauigkeit, Dezimalstellen

DezimalstellenangabeErgebnis (Genauigkeit, Dezimalstellen)Spaltenlänge (in Bytes)Genauigkeit in Sekundenbruchteilen
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

Speichergröße

Standardmäßig 10 Bytes fest, wobei die Standardgenauigkeit in Sekundenbruchteilen 100 ns beträgt.

Genauigkeit

100 Nanosekunden

Standardwert

1900-01-01 00:00:00 00:00

Kalender

Gregorianisch

Benutzerdefinierte Genauigkeit in Sekundenbruchteilen

Ja

Beachtung und Beibehaltung des Zeitzonenoffsets

Ja

Beachtung der Sommerzeit

Nein

Unterstützte Formate der Zeichenfolgenliterale für datetimeoffset

In der folgenden Tabelle werden die unterstützten ISO 8601-Zeichenfolgenliterale für datetimeoffset aufgelistet. Informationen zu alphabetischen, numerischen und unstrukturierten Formaten sowie zu Zeitformaten für die Datums- und Uhrzeitteile von datetimeoffset finden Sie unter date (Transact-SQL) und time (Transact-SQL).

ISO 8601

Beschreibung

YYYY-MM-DDThh:mm:ss[.nnnnnnn][{+|-}hh:mm]

Diese beiden Formate werden nicht von den Gebietsschemaeinstellungen für Sitzungen SET LANGUAGE und SET DATEFORMAT beeinflusst. Es sind keine Leerzeichen zwischen datetimeoffset und datetime zulässig.

YYYY-MM-DDThh:mm:ss[.nnnnnnn]Z (UTC)

Dieses Format gibt gemäß ISO-Definition an, dass der datetime-Teil in koordinierter Weltzeit (Coordinated Universal Time; UTC) ausgedrückt werden soll. Beispiel: 1999-12-12 12:30:30.12345 -07:00 soll als 1999-12-12 19:30:30.12345Z dargestellt werden.

Zeitzonenoffset

Ein Zeitzonenoffset gibt den Zonenoffset von der UTC-Zeit für einen time-Wert oder einen datetime-Wert an. Der Zeitzonenoffset kann im Format [+|-] hh:mm dargestellt werden:

  • Bei hh handelt es sich um zwei Ziffern im Bereich von 00 bis 14, die die Anzahl der Stunden im Zeitzonenoffset darstellen.

  • Bei mm handelt es sich um zwei Ziffern im Bereich von 00 bis 59, die die Anzahl der zusätzlichen Minuten im Zeitzonenoffset darstellen.

  • + (plus) oder – (minus) ist das erforderliche Zeichen für einen Zeitzonenoffset. Dies gibt an, ob der Zeitzonenoffset von der UTC-Zeit addiert oder von dieser subtrahiert wird, um die lokale Zeit zu erhalten. Der gültige Zeitzonenoffset liegt im Bereich von -14: 00 bis +14: 00.

Der Zeitzonenoffsetbereich entspricht dem W3C XML-Standard für die XSD-Schemadefinition und weicht geringfügig von der SQL 2003-Standarddefinition (12:59 bis +14:00) ab.

Der optionale Parameter vom Typ fractional seconds precision gibt die Anzahl der Ziffern für den Bruchteil der Sekunden an. Dieser Wert kann eine ganze Zahl von 0 bis 7 (100 Nanosekunden) sein. Der Standardwert von fractional seconds precision beträgt 100 ns (sieben Ziffern für den Bruchteil der Sekunden).

Die Daten werden in der Datenbank gespeichert und auf dem Server entsprechend der UTC-Zeit verarbeitet, verglichen, sortiert und indiziert. Der Zeitzonenoffset bleibt in der Datenbank zum Abruf erhalten.

Es wird davon ausgegangen, dass der angegebene Zeitzonenoffset die Sommerzeit beachtet und für jeden angegebenen datetime-Wert, der in der Sommerzeit liegt, angepasst wird.

Beim datetimeoffset-Datentyp wird bei Einfüge-, Update-, Konvertierungs- oder Zuweisungsvorgängen oder bei arithmetischen Vorgängen sowohl der UTC-Wert als auch der (für den permanenten oder konvertierten Zeitzonenoffset) lokale datetime-Wert überprüft. Wird ein ungültiger UTC-Wert oder (für den permanenten oder konvertierten Zeitzonenoffset) lokaler datetime-Wert erkannt, wird ein Fehler wegen eines ungültigen Werts ausgelöst. 9999-12-31 10:10:00 ist z. B. im UTC-Format gültig, führt bei der lokalen Zeit aber zu einer Überschreitung des Zeitzonenoffsets +13:50.

Kompatibilität mit ANSI und ISO 8601

Die Abschnitte der Themen zur Kompatibilität mit ANSI und ISO 8601 von date und time gelten auch für datetimeoffset.

Beispiele

Im folgenden Beispiel werden die Ergebnisse der Umwandlung von einer Zeichenfolge in alle date-Datentypen und time-Datentypen verglichen.

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

Dies ist das Resultset.

Datentyp

Ausgabe

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