Freigeben über


datetime (Transact-SQL)

Definiert ein Datum, das mit einer Uhrzeit mit Sekundenbruchteilen kombiniert ist und auf dem 24-Stunden-Format basiert.

HinweisHinweis

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 mehr Genauigkeit bei Sekundenangaben. datetimeoffset bietet Zeitzonenunterstützung für global bereitgestellte Anwendungen.

Eine Übersicht über alle Datums- und Uhrzeitdatentypen und zugehörigen Funktionen von Transact-SQL finden Sie unter Datums- und Uhrzeitfunktionen (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 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 Bytes

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 eines der folgenden Formate haben:

  • Zahl Trennzeichen Zahl Trennzeichen number [time] [time]

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:

  • Schließen Sie die Datums- und Zeitdaten in einfache Anführungszeichen ein ('). Verwenden Sie N' für andere Sprachen als Englisch.

  • Zeichen, die in Klammern eingeschlossen werden, sind optional.

  • Wenn Sie nur die letzten zwei Ziffern des Jahres angeben, liegen Werte, die niedriger als die letzten zwei Ziffern des Werts der Konfigurationsoption two digit year cutoff sind, im selben Jahrhundert wie das Umstellungsjahr. Werte, die größer als oder gleich dem Wert dieser Option sind, liegen in dem Jahrhundert, das dem Umstellungsjahr vorangeht. Wenn z. B. two digit year cutoff den Wert 2050 hat (Standardeinstellung), wird das zweistellige Jahr 25 als 2025 und das zweistellige Jahr 50 als 1950 interpretiert. Um Mehrdeutigkeit zu vermeiden, sollten Sie vierstellige Jahreszahlen verwenden.

  • Wenn der Tag fehlt, wird der erste Tag des Monats angegeben.

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:

  • 2004-05-23T14:25:10

  • 2004-05-23T14:25:10.487

Wenn Sie das ISO 8601-Format verwenden, müssen Sie jedes Element in diesem Format angeben. Dies beinhaltet auch das T, die Doppelpunkte (:) und den Punkt (.) im Format.

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' }:

  • literal_type gibt die Art der Escapesequenz an. Timestamp-Daten besitzen drei literal_type-Bezeichner:

    • d = Nur Datum

    • t = Nur Uhrzeit

    • ts = Timestamp (Uhrzeit + Datum)

  • 'constant_value' ist der Wert der Escapesequenz. constant_value muss für jeden literal_type-Wert einem der folgenden Formate entsprechen.

    literal_typeFormat für constant_value
    d yyyy-mm-dd
    t hh:mm:ss[.fff]
    ts yyyy-mm-dd hh:mm:ss[.fff]

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.

Beispiele

Im folgenden Beispiel werden die Ergebnisse der Umwandlung einer Zeichenfolge in die 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

Siehe auch

Verweis