Dieser Artikel bietet einen direkten Vergleich der Datums- und Zeitdatentypen in SQL Server hinsichtlich ihres Bereichs, ihrer Genauigkeit und Speichergröße.
Datentyp | Bereich | Genauigkeit | Speichergröße |
---|---|---|---|
Datum | 0001-01-01 durch 9999-12-31 | 1 Tag | 3 Byte |
datetime | 1753-01-01 durch 9999-12-31 00:00:00 durch 23:59:59.997 | 0,00333 Sekunden | 8 Byte |
datetime2 | 0001-01-01 durch 9999-12-31 00:00:00 durch 23:59:59.9999999 | 100 Nanosekunden | 6 bis 8 Byte* |
datetimeoffset | 0001-01-01 durch 9999-12-31 00:00:00 durch 23:59:59.9999999 -14:00 durch +14:00 | 100 Nanosekunden | 8 bis 10 Byte* |
smalldatetime | 1900-01-01 durch 2079-06-06 00:00:00 durch 23:59:59 | 1 Minute | 4 Byte |
Zeit | 00:00:00.0000000 durch 23:59:59.9999999 | 100 Nanosekunden | 3 bis 5 Byte* |
* Beachten Sie, dass es sich bei den hier aufgeführten Speichermengen um die in der Microsoft-Dokumentation aufgeführten Mengen handelt. Diese Datentypen verwenden jedoch auch 1 Byte, um die Genauigkeit zu speichern. Fügen Sie daher 1 Byte zu den hier aufgeführten Beträgen hinzu, um ein vollständigeres Bild der Speicheranforderungen zu erhalten.
Beispielsweise die Speichergröße für datetime2 würde von 7 bis 9 Bytes reichen, wenn Sie das zusätzliche Byte einbeziehen.
Konvertieren zwischen diesen Datentypen
Aufgrund der Unterschiede in Genauigkeit und Reichweite zwischen diesen Datentypen müssen Sie beim Konvertieren zwischen ihnen besonders vorsichtig sein. Insbesondere die Konvertierung von einem Typ mit höherer Genauigkeit in einen Typ mit niedrigerer Genauigkeit kann dazu führen, dass ein Teil des Werts verloren geht und der verbleibende Wert aufgerundet wird.
Beispiele finden Sie unter Konvertieren zwischen Datums- und Uhrzeitdatentypen in SQL Server.