smalldatetime (Transact-.SQL)

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

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.