datetime (Transact-SQL)
Definiert ein Datum, das mit einer Uhrzeit mit Sekundenbruchteilen kombiniert ist und auf dem 24-Stunden-Format basiert.
Hinweis |
---|
Verwenden Sie für neue Arbeitsaufgaben die Datentypen time, date, datetime2 und datetimeoffset. Diese Typen entsprechen dem SQL-Standard. Sie lassen sich besser portieren. time, datetime2 und datetimeoffset bieten eine höhere Genauigkeit in Millisekunden. datetimeoffset unterstützt Zeitzonen für global bereitgestellte Anwendungen. |
Beschreibung von datetime
Eigenschaft |
Wert |
---|---|
Syntax |
datetime |
Verwendung |
DECLARE @MyDatetime datetime CREATE TABLE Table1 ( Column1 datetime ) |
Standardmäßige Formate der Zeichenfolgenliterale (wird für Downlevelclients verwendet) |
Nicht zutreffend |
Datumsbereich |
Zwischen dem 1. Januar 1753 und dem 31. Dezember 9999 |
Zeitbereich |
00:00:00 bis 23:59:59.997 |
Zeitzonenoffsetbereich |
Kein |
Elementbereiche |
Bei YYYY handelt es sich um vier Ziffern von 1753 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 drei Ziffern im Bereich von 0 bis 999, die die Sekundenbruchteile darstellen. |
Zeichenlänge |
Mindestens 19 Positionen bis maximal 23 Positionen |
Speichergröße |
8 Byte |
Genauigkeit |
Gerundet in Inkrementen von 0,000, 0,003 oder 0,007 Sekunden |
Standardwert |
1900-01-01 00:00:00 |
Kalender |
Gregorianisch (schließt nicht den vollständigen Bereich von Jahren ein) |
Benutzerdefinierte Genauigkeit in Sekundenbruchteilen |
Nein |
Beachtung und Beibehaltung des Zeitzonenoffsets |
Nein |
Beachtung der Sommerzeit |
Nein |
Unterstützte Formate der Zeichenfolgenliterale für datetime
In den folgenden Tabellen werden die unterstützten Formate für Zeichenfolgenliterale für datetime aufgelistet. Außer bei ODBC stehen datetime-Zeichenfolgenliterale in einfachen Anführungszeichen ('), z. B. 'string_literaL'. Wenn die Umgebung nicht us_english lautet, sollten die Zeichenfolgenliterale das Format N'string_literaL' aufweisen.
Numerisch |
Beschreibung |
---|---|
Datumsformate: [0]4/15/[19]96 -- (mdy) [0]4-15-[19]96 -- (mdy) [0]4.15.[19]96 -- (mdy) [0]4/[19]96/15 -- (myd) 15/[0]4/[19]96 -- (dmy) 15/[19]96/[0]4 -- (dym) [19]96/15/[0]4 -- (ydm) [19]96/[0]4/15 -- (ymd) Zeitformate: 14:30 14:30[:20:999] 14:30[:20.9] 4am 4 PM |
Sie können Datumsdaten mit der numerischen Angabe eines Monats angeben. So stellt z. B. das Datum 5/20/97 das Jahr 1997 und den zwanzigsten Tag des Monats Mai dar. Wenn Sie das numerische Datumsformat verwenden, müssen Sie den Monat, den Tag und das Jahr in einer Zeichenfolge mit Schrägstrichen (/), Bindestrichen (-) oder Punkten (.) als Trennzeichen angeben. Diese Zeichenfolge muss das folgende Format haben:
Wenn die festgelegte Sprache us_english ist, gilt als Standarddatumsformat mdy. Sie können das Datumsformat mithilfe der SET DATEFORMAT-Anweisung ändern. Die SET DATEFORMAT-Einstellung bestimmt, wie Datumsangaben interpretiert werden. Wenn die Reihenfolge nicht mit der Einstellung übereinstimmt, werden die Werte nicht als Datumsangabe interpretiert, da sie außerhalb des Bereichs liegen, oder die Werte werden falsch interpretiert. Beispielsweise gibt es für 12/10/08 je nach der DATEFORMAT-Einstellung sechs verschiedene Interpretationen. Eine vierstellige Jahresangabe wird als Jahr interpretiert. |
Alphabetisch |
Beschreibung |
---|---|
Apr[il] [15][,] 1996 Apr[il] 15[,] [19]96 Apr[il] 1996 [15] [15] Apr[il][,] 1996 15 Apr[il][,][19]96 15 [19]96 apr[il] [15] 1996 apr[il] 1996 APR[IL] [15] 1996 [15] APR[IL] |
Sie können Datumsdaten mit einem Monat angeben, der mit dem vollständigen Monatsnamen angegeben wird. Dabei können Sie beispielsweise den vollständigen Monatsnamen April oder die in der aktuellen Sprache angegebene Abkürzung für den Monat, z. B. Apr, angeben. Kommas können optional verwendet werden; die Groß-/Kleinschreibung wird ignoriert. Es folgen einige Richtlinien für die Verwendung von alphabetischen Datumsformaten:
Die SET DATEFORMAT-Sitzungseinstellung wird nicht angewendet, wenn Sie den Monat in alphabetischer Form (als Wort) angeben. |
ISO 8601 |
Beschreibung |
---|---|
YYYY-MM-DDThh:mm:ss[.mmm] YYYYMMDD[ hh:mm:ss[.mmm]] |
Beispiele:
Wenn Sie das ISO 8601-Format verwenden, müssen Sie jedes Element in diesem Format angeben. Dazu gehören auch T, die Doppelpunkte (:) und der Punkt (.), die in diesem Format aufgeführt werden. Die eckigen Klammern zeigen, dass der Teil, der die Sekunden angibt, optional ist. Die Uhrzeit wird im 24-Stunden-Format angegeben. Der Buchstabe T zeigt den Beginn des Uhrzeitteils des datetime-Werts an. Der Vorteil der Verwendung des ISO 8601-Formats liegt darin, dass es sich um einen internationalen Standard mit eindeutigen Angaben handelt. Außerdem wird dieses Format nicht von der SET DATEFORMAT-Einstellung oder der SET LANGUAGE-Einstellung beeinflusst. |
Unstrukturiert |
Beschreibung |
---|---|
YYYYMMDD hh:mm:ss[.mmm] |
ODBC |
Beschreibung |
||||||||
---|---|---|---|---|---|---|---|---|---|
{ ts '1998-05-02 01:23:56.123' } { d '1990-10-02' } { t '13:33:41' } |
Die ODBC-API definiert Escapesequenzen zur Darstellung von Datums- und Uhrzeitwerten, die in der ODBC-Terminologie als Timestamp-Daten bezeichnet werden. Dieses ODBC-Timestamp-Format wird auch von der OLE DB-Sprachendefinition (DBGUID-SQL) unterstützt, die vom OLE DB-Anbieter Microsoft für SQL Server unterstützt wird. Anwendungen, die die ADO-, OLE DB- und ODBC-basierten APIs verwenden, können dieses ODBC-Timestamp-Format zur Darstellung von Datums- und Zeitangaben verwenden. Escapesequenzen für ODBC-Timestamp-Daten haben das folgende Format: { literal_type 'constant_value' }:
|
Runden der Genauigkeit in Sekundenbruchteilen von datetime
datetime-Werte werden in Abschnitten von 0,000, 0,003 oder 0,007 Sekunden gerundet, wie in der folgenden Tabelle dargestellt.
Vom Benutzer angegebener Wert |
Gespeicherter Systemwert |
---|---|
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 |
Kompatibilität mit ANSI und ISO 8601
datetime ist nicht mit ANSI oder ISO 8601 kompatibel.
Konvertieren von Datums- und Zeitdaten
Beim Konvertieren in date- und time-Datentypen lehnt SQL Server alle Werte ab, die nicht als Datum oder Uhrzeit erkannt werden. Informationen zur Verwendung der CAST-Funktion und der CONVERT-Funktion mit Datums- und Uhrzeitdaten finden Sie unter CAST und CONVERT (Transact-SQL).
Konvertieren von datetime-Werten in andere Datums- und Uhrzeittypen
Die folgende Tabelle veranschaulicht die Abläufe bei der Konvertierung des datetime-Datentyps in andere Datums- und Uhrzeitdatentypen.
Zieldatentyp der Konvertierung |
Konvertierungsinformationen |
---|---|
date |
Jahr, Monat und Tag werden kopiert. Die Zeitkomponente wird auf 00:00:00.000 festgelegt. Der folgende Code zeigt die Ergebnisse der Konvertierung eines date-Werts in einen datetime-Wert.
|
time(n) |
Die Zeitkomponente wird kopiert, und die Datumskomponente wird auf 1900-01-01 festgelegt. Wenn die Genauigkeit des time(n)-Werts um mehr als drei Sekundenbruchteile abweicht, wird der Wert gekürzt. Das folgende Beispiel zeigt die Ergebnisse der Konvertierung eines time(4)-Werts in einen datetime-Wert.
|
smalldatetime |
Stunden und Minuten werden kopiert. Die Sekunden und die Sekundenbruchteile werden auf 0 festgelegt. Der folgende Code zeigt die Ergebnisse der Konvertierung eines smalldatetime-Werts in einen datetime-Wert.
|
datetimeoffset(n) |
Datums- und Zeitkomponenten werden kopiert. Die Zeitzone wird abgeschnitten. Wenn die Genauigkeit des datetimeoffset(n)-Werts um mehr als drei Sekundenbruchteile abweicht, wird der Wert gekürzt. Das folgende Beispiel zeigt die Ergebnisse der Konvertierung eines datetimeoffset(4)-Werts in einen datetime-Wert.
|
datetime2(n) |
Datum und Uhrzeit werden kopiert. Wenn die Genauigkeit des datetime2(n)-Werts um mehr als drei Sekundenbruchteile abweicht, wird der Wert gekürzt. Das folgende Beispiel zeigt die Ergebnisse der Konvertierung eines datetime2(4)-Werts in einen datetime-Wert.
|
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';
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 |