time (Transact-SQL)
Definiert eine Uhrzeit. Die Uhrzeit basiert auf einem 24-Stunden-Format und beachtet keine Zeitzonen.
Eine Übersicht über alle Datums- und Uhrzeitdatentypen und die 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 des time-Datentyps
Eigenschaft |
Wert |
---|---|
Syntax |
time [ (fractional second precision) ] |
Verwendung |
DECLARE @MyTime time(7) CREATE TABLE Table1 ( Column1 time(7) ) |
fractional seconds precision |
Definiert die Anzahl der Stellen für den Bruchteil der Sekunden. Dies kann eine ganze Zahl zwischen 0 und 7 sein. Der Standardwert für den Sekundenbruchteil beträgt 7 (100 ns). |
Verwendung |
DECLARE @MyTime time(7) CREATE TABLE Table1 ( Column1 time(7) ) |
Standardmäßiges Format der Zeichenfolgenliterale (wird für Downlevelclients verwendet) |
hh:mm:ss[.nnnnnnn] Weitere Informationen finden Sie im Abschnitt "Abwärtskompatibilität für Downlevelclients" unter Verwenden von Datums- und Zeitdaten. |
Bereich |
00:00:00.0000000 bis 23:59:59.9999999 |
Elementbereiche |
Bei hh handelt es sich um zwei Ziffern im Bereich von 0 bis 23, die die Stunde darstellen. Bei mm handelt es sich um zwei Ziffern im Bereich von 0 bis 59, die die Minute darstellen. Bei ss handelt es sich um zwei Ziffern im Bereich von 0 bis 59, die die Sekunde darstellen. Bei n* handelt es sich um bis zu sieben Ziffern im Bereich von 0 bis 9999999, die die Sekundenbruchteile darstellen. |
Zeichenlänge |
Mindestens 8 Positionen (hh:mm:ss) bis maximal 16 Positionen (hh:mm:ss.nnnnnnn) |
Genauigkeit, Dezimalstellen (Benutzer gibt nur Dezimalstellen an) |
Angegebene DezimalstelleErgebnis (Genauigkeit, Dezimalstellen)Spaltenlänge (in Bytes)Bruchteil Sekunden Genauigkeit
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
|
Speichergröße |
Standardmäßig 5 Bytes fest, wobei die Standardgenauigkeit in Sekundenbruchteilen 100 ns beträgt. |
Genauigkeit |
100 Nanosekunden |
Standardwert |
00:00:00 Dieser Wert wird für den angefügten Zeitteil für eine implizite Konvertierung von date in datetime2 oder datetimeoffset verwendet. |
Benutzerdefinierte Genauigkeit in Sekundenbruchteilen |
Ja |
Beachtung und Beibehaltung des Zeitzonenoffsets |
Nein |
Beachtung der Sommerzeit |
Nein |
Unterstützte Formate der Zeichenfolgenliterale für time
In der folgenden Tabelle werden die gültigen Formate der Zeichenfolgenliterale für den time-Datentyp aufgeführt.
SQL Server |
Beschreibung |
---|---|
hh:mm[:ss][:Sekundenbruchteile][AM][PM] hh:mm[:ss][.Sekundenbruchteile][AM][PM] hhAM[PM] hh AM[PM] |
Der Stundenwert von 0 stellt die Stunde nach Mitternacht (AM) dar, unabhängig davon, ob AM angegeben ist. Wenn für die Stunde der Wert 0 festgelegt ist, kann PM nicht angegeben werden. Stundenwerte von 01 bis 11 stellen die Stunden vor 12 Uhr mittags dar, wenn weder AM noch PM angegeben wurde. Die Werte stellen die Stunden vor 12 Uhr mittags dar, wenn AM angegeben wurde. Sie stellen die Stunden nach 12 Uhr mittags dar, wenn PM angegeben wurde. Der Stundenwert 12 stellt die Stunde, beginnend mit 12 Uhr mittags, dar, wenn weder AM noch PM angegeben wurde. Wurde AM angegeben, stellt der Wert die Stunde dar, die um Mitternacht beginnt. Wurde PM angegeben, stellt der Wert die Stunde dar, die um 12 Uhr mittags beginnt. Beispiel: 12:01 ist 1 Minute nach 12 Uhr mittags, genauso wie 12:01 PM, während 12:01 AM 1 Minute nach Mitternacht ist. Die Angabe 12:01 AM ist identisch mit der Angabe 00:01 oder 00:01 AM. Stundenwerte von 13 bis 23 stellen die Stunden nach 12 Uhr mittags dar, wenn weder AM noch PM angegeben wurde. Die Werte stellen darüber hinaus die Stunden nach 12 Uhr mittags dar, wenn PM angegeben wurde. AM kann nicht angegeben werden, wenn der Stundenwert zwischen 13 und 23 liegt. Ein Stundenwert von 24 ist ungültig. Um Mitternacht darzustellen, verwenden Sie 12:00 AM oder 00:00. Vor Millisekundenangaben kann entweder ein Doppelpunkt (:) oder ein Punkt (.) stehen. Der Doppelpunkt bedeutet, dass die folgende Zahl Tausendstelsekunden darstellt. Ein Punkt bedeutet, dass eine einzelne folgende Ziffer Zehntelsekunden, zwei Folgeziffern Hundertstelsekunden und drei Folgeziffern Tausendstelsekunden darstellen. Beispielsweise zeigt 12:30:20:1 zwanzig Sekunden und eine Tausendstelsekunde nach 12:30 an, während 12:30:20.1 zwanzig Sekunden und eine Zehntelsekunde nach 12:30 anzeigt. |
ISO 8601 |
Hinweise |
---|---|
hh:mm:ss hh:mm[:ss][.Sekundenbruchteile] |
|
ODBC |
Hinweise |
---|---|
{t 'hh:mm:ss[.Sekundenbruchteile]'} |
ODBC-API-spezifisch Funktionen in SQL Server 2008 wie in SQL Server 2005. |
time-Kompatibilität mit ANSI- und ISO 8601-Standards
Die Verwendung des Stundenwerts 24 zur Darstellung von Mitternacht sowie von Schaltsekunden größer als 59, gemäß ISO 8601 (5.3.2 und 5.3), sind nicht abwärtskompatibel und stimmen möglicherweise nicht mit den bestehenden Datums- und Uhrzeittypen überein. Sie sind durch den SQL-keinen Standard 2003 nicht definiert.
Das standardmäßige Format der Zeichenfolgenliterale (wird für Downlevelclients verwendet) entspricht dem SQL-Standard, der als hh:mm:ss[.nnnnnnn] definiert ist. Dieses Format ähnelt der ISO 8601-Definition für TIME unter Ausschluss der Sekundenbruchteile.
Beispiele
A. Vergleichen des date-Datentyps mit dem time-Datentyp
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';
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 |
B. Einfügen von gültigen time-Zeichenfolgenliteralen in eine time(7)-Spalte
In der folgenden Tabelle werden neben den unterschiedlichen Zeichenfolgenliteralen, die in eine Spalte des Datentyps time(7) eingefügt werden können, auch die Werte aufgelistet, die anschließend in der entsprechenden Spalte gespeichert werden.
Formattyp des Zeichenfolgenliterals |
Eingefügtes Zeichenfolgenliteral |
Gespeicherter time(7)-Wert |
Beschreibung |
---|---|---|---|
SQL Server |
'01:01:01:123AM' |
01:01:01.1230000 |
Wenn vor der Genauigkeit der Sekundenbruchteile ein Doppelpunkt (:) steht, können die Dezimalstellen mit maximal 3 Positionen angegeben werden. Andernfalls wird ein Fehler ausgegeben. |
SQL Server |
'01:01:01.1234567 AM' |
01:01:01.1234567 |
Wenn AM oder PM angegeben ist, wird die Uhrzeit im 24-Stunden-Format ohne das Literal AM oder PM gespeichert. |
SQL Server |
'01:01:01.1234567 PM' |
13:01:01.1234567 |
Wenn AM oder PM angegeben ist, wird die Uhrzeit im 24-Stunden-Format ohne das Literal AM oder PM gespeichert. |
SQL Server |
'01:01:01.1234567PM' |
13:01:01.1234567 |
Ein Leerzeichen vor AM oder PM ist optional. |
SQL Server |
'01AM' |
01:00:00.0000000 |
Wenn nur die Stunde angegeben wird, sind alle anderen Werte 0. |
SQL Server |
'01 AM' |
01:00:00.0000000 |
Ein Leerzeichen vor AM oder PM ist optional. |
SQL Server |
'01:01:01' |
01:01:01.0000000 |
Wenn keine Genauigkeit der Sekundenbruchteile angegeben wird, wird jede Position, die durch den Datentyp definiert ist, auf 0 festgelegt. |
ISO 8601 |
'01:01:01.1234567' |
01:01:01.1234567 |
Zur Erfüllung des ISO 8601-Standards verwenden Sie das 24-Stunden-Format ohne Angabe von AM oder PM. |
ISO 8601 |
'01:01:01.1234567 +01:01' |
01:01:01.1234567 |
Der optionale Zeitzonenunterschied (TZD) ist bei der Eingabe zugelassen, wird aber nicht gespeichert. |
C. Einfügen von time-Zeichenfolgenliteralen in die Spalten der einzelnen date-Datentypen und time-Datentypen
Die folgende Tabelle zeigt in der ersten Spalte ein time-Zeichenfolgenliteral, das in eine Datenbanktabellen-Spalte des Datentyps date oder time (wird in der zweiten Spalte angezeigt) eingefügt werden soll. Die dritte Spalte zeigt den Wert, der in der Datenbanktabellen-Spalte gespeichert wird.
Eingefügtes Zeichenfolgenliteral |
Spaltendatentyp |
Wert, der in der Spalte gespeichert wird |
Beschreibung |
---|---|---|---|
'12:12:12.1234567' |
time(7) |
12:12:12.1234567 |
Wenn die Genauigkeit der Sekundenbruchteile den für die Spalte angegebenen Wert überschreitet, wird die Zeichenfolge abgeschnitten, ohne einen Fehler zu verursachen. |
'2007-05-07' |
date |
NULL |
Jeder time-Wert führt zu einer fehlerhaften INSERT-Anweisung. |
'12:12:12' |
smalldatetime |
1900-01-01 12:12:00 |
Jeder Wert für die Genauigkeit der Sekundenbruchteile führt zu einer fehlerhaften INSERT-Anweisung. |
'12:12:12.123' |
datetime |
1900-01-01 12:12:12.123 |
Jede Sekundengenauigkeit, die mehr als 3 Stellen umfasst, führt zu einer fehlerhaften INSERT-Anweisung. |
'12:12:12.1234567' |
datetime2(7) |
1900-01-01 12:12:12.1234567 |
Wenn die Genauigkeit der Sekundenbruchteile den für die Spalte angegebenen Wert überschreitet, wird die Zeichenfolge abgeschnitten, ohne einen Fehler zu verursachen. |
'12:12:12.1234567' |
datetimeoffset(7) |
1900-01-01 12:12:12.1234567 +00:00 |
Wenn die Genauigkeit der Sekundenbruchteile den für die Spalte angegebenen Wert überschreitet, wird die Zeichenfolge abgeschnitten, ohne einen Fehler zu verursachen. |
Siehe auch