- 22.07.2017
- 4 Minuten zu lesen
-
- M
- j
- c
- M
- m
-
+4
Gilt für: SQL Server (alle unterstützten Versionen) Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Parallel Data Warehouse
Definiert ein Datum, das mit einer Tageszeit kombiniert wird. Die Uhrzeit basiert auf einem 24-Stunden-Tag, wobei die Sekunden immer Null (:00) sind und keine Sekundenbruchteile enthalten.
Hinweis
Verwenden Sie die Datentypen time, date, datetime2 und datetimeoffset für neue Arbeiten. Diese Typen stimmen mit dem SQL-Standard überein. Sie sind besser portierbar. time, datetime2 und datetimeoffset bieten eine höhere Sekundengenauigkeit. datetimeoffset bietet Zeitzonenunterstützung für weltweit eingesetzte Anwendungen.
smalldatetime Beschreibung
Property | Value |
---|---|
Syntax | smalldatetime |
Verwendung | DECLARE @MeineMittelzeit smalldatetime CREATE TABLE Table1 ( Column1 smalldatetime ) |
Standard-Stringliteralformate (verwendet für Down-level client) |
Nicht anwendbar |
Datumsbereich | 1900-01-01 bis 2079-06-06 Januar 1, 1900, bis 6. Juni 2079 |
Zeitbereich | 00:00:00 bis 23:59:59 2007-05-09 23:59:59 wird aufgerundet auf 2007-05-10 00:00:00 |
Elementbereiche | JJJJ ist eine vierstellige Zahl von 1900 bis 2079, die ein Jahr darstellt. MM ist eine zweistellige Zahl zwischen 01 und 12, die einen Monat im angegebenen Jahr darstellt. DD ist eine zweistellige Zahl zwischen 01 und 31, je nach Monat, die einen Tag des angegebenen Monats darstellt. hh ist eine zweistellige Zahl zwischen 00 und 23, die die Stunde darstellt. mm ist eine zweistellige Zahl zwischen 00 und 59, die die Minute darstellt. ss ist eine zweistellige Zahl zwischen 00 und 59, die die Sekunde darstellt. Werte, die 29,998 Sekunden oder weniger betragen, werden auf die nächste Minute abgerundet. Werte von 29,999 Sekunden oder mehr werden auf die nächste Minute aufgerundet. |
Zeichenlänge | maximal 19 Stellen |
Speichergröße | 4 Bytes, fest. |
Genauigkeit | Eine Minute |
Standardwert | 1900-01-01 00:00:00 |
Kalender | Gregorianisch (Beinhaltet nicht den kompletten Bereich der Jahre.) |
Benutzer-definierte Sekundenbruchteile | Nein |
Zeitzonenversatz beachten und erhalten | Nein |
Sommerzeit beachten | Nein |
ANSI und ISO 8601 Konformität
smalldatetime ist nicht ANSI oder ISO 8601 konform.
Konvertieren von Datums- und Zeitdaten
Bei der Konvertierung in Datums- und Zeitdatentypen weist SQL Server alle Werte zurück, die nicht als Datum oder Uhrzeit erkannt werden können. Informationen zur Verwendung der Funktionen CAST und CONVERT mit Datums- und Zeitdaten finden Sie unter CAST und CONVERT (Transact-SQL).
Konvertieren von smalldatetime in andere Datums- und Zeittypen
Dieser Abschnitt beschreibt, was geschieht, wenn ein smalldatetime-Datentyp in andere Datums- und Zeitdatentypen konvertiert wird.
Bei einer Konvertierung in ein Datum werden Jahr, Monat und Tag kopiert. Der folgende Code zeigt die Ergebnisse der Konvertierung eines smalldatetime
-Wertes in einen date
-Wert.
DECLARE @smalldatetime smalldatetime = '1955-12-13 12:43:10'; DECLARE @date date = @smalldatetime SELECT @smalldatetime AS '@smalldatetime', @date AS 'date'; --Result --@smalldatetime date ------------------------- ---------- --1955-12-13 12:43:00 1955-12-13 -- --(1 row(s) affected)
Bei der Konvertierung in time(n) werden die Stunden, Minuten und Sekunden kopiert. Die Sekundenbruchteile werden auf 0 gesetzt. Der folgende Code zeigt das Ergebnis der Konvertierung eines smalldatetime
-Wertes in einen time(4)
-Wert.
DECLARE @smalldatetime smalldatetime = '1955-12-13 12:43:10'; DECLARE @time time(4) = @smalldatetime; SELECT @smalldatetime AS '@smalldatetime', @time AS 'time'; --Result --@smalldatetime time ------------------------- ------------- --1955-12-13 12:43:00 12:43:00.0000 -- --(1 row(s) affected)
Bei der Konvertierung in datetime wird der smalldatetime-Wert in den datetime-Wert kopiert. Die Sekundenbruchteile werden auf 0 gesetzt. Der folgende Code zeigt die Ergebnisse der Konvertierung eines smalldatetime
-Wertes in einen datetime
-Wert.
DECLARE @smalldatetime smalldatetime = '1955-12-13 12:43:10'; DECLARE @datetime datetime = @smalldatetime; SELECT @smalldatetime AS '@smalldatetime', @datetime AS 'datetime'; --Result --@smalldatetime datetime ------------------------- ----------------------- --1955-12-13 12:43:00 1955-12-13 12:43:00.000 -- --(1 row(s) affected)
Bei einer Konvertierung in datetimeoffset(n) wird der smalldatetime-Wert in den datetimeoffset(n)-Wert kopiert. Die Sekundenbruchteile werden auf 0 gesetzt, und der Zeitzonenversatz wird auf +00:0 gesetzt. Der folgende Code zeigt die Ergebnisse der Konvertierung eines smalldatetime
-Wertes in einen datetimeoffset(4)
-Wert.
DECLARE @smalldatetime smalldatetime = '1955-12-13 12:43:10'; DECLARE @datetimeoffset datetimeoffset(4) = @smalldatetime; SELECT @smalldatetime AS '@smalldatetime', @datetimeoffset AS 'datetimeoffset(4)'; --Result --@smalldatetime datetimeoffset(4) ------------------------- ------------------------------ --1955-12-13 12:43:00 1955-12-13 12:43:00.0000 +00:0 -- --(1 row(s) affected)
Für die Konvertierung in datetime2(n) wird der smalldatetime-Wert in den datetime2(n)-Wert kopiert. Die Sekundenbruchteile werden auf 0 gesetzt. Der folgende Code zeigt das Ergebnis der Konvertierung eines smalldatetime
-Wertes in einen datetime2(4)
-Wert.
DECLARE @smalldatetime smalldatetime = '1955-12-13 12:43:10'; DECLARE @datetime2 datetime2(4) = @smalldatetime; SELECT @smalldatetime AS '@smalldatetime', @datetime2 AS ' datetime2(4)'; --Result --@smalldatetime datetime2(4) ------------------------- ------------------------ --1955-12-13 12:43:00 1955-12-13 12:43:00.0000 -- --(1 row(s) affected)
Beispiele
A. Umwandlung von String-Literalen mit Sekunden in smalldatetime
Das folgende Beispiel vergleicht die Umwandlung von Sekunden in String-Literalen in smalldatetime
.
SELECT CAST('2007-05-08 12:35:29' AS smalldatetime) ,CAST('2007-05-08 12:35:30' AS smalldatetime) ,CAST('2007-05-08 12:59:59.998' AS smalldatetime);
Eingang | Ausgang |
---|---|
2007-05-08 12:35:29 | 2007-05-08 12:35:00 |
2007-05-08 12:35:30 | 2007-05-08 12:36:00 |
2007-05-08 12:59:59.998 | 2007-05-08 13:00:00 |
B. Vergleich von Datums- und Zeitdatentypen
Das folgende Beispiel vergleicht die Ergebnisse des Castings einer Zeichenkette in jeden Datums- und Zeitdatentyp.
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';