2008-05-04

Übersicht der DateTime-Datentypen in SQL Server 2008

Der folgende Artikel gibt einen Übersicht über die DateTime-Datentypen in SQL Server 2008. Auch die neuen Datentypen wie DATE, DATETIME2, DATETIMEOFFSET, und TIME sind in diesem Artikel beschrieben.

DATE - NEU

Der Datentyp DATE speichert Datumswert ohne Zeit Informationen.

Der Bereich für diesen Datentyp liegt zwischen 0001-01-01 - 9999-12-31 (Jahr - Monat -Tag).

Der Speicherbedarf liegt bei 3 bytes.

1 -- DATE --------------------------------------
2 -- Format : Jahr - Monat - Tag
3 -- Year - Month - Day
4
5 -- Range : 0001-01-01 - 9999-12-31
6 -- Storage Size : 3 bytes
7 -- Default value: 1900-01-01
8 ----------------------------------------------
9
10 -- Beispiel-Code -----------------------------
11 DECLARE @Date_DataType DATE
12 SET @Date_DataType = SYSDATETIME()
13
14 PRINT SYSDATETIME()
15 PRINT @Date_DataType
16 ----------------------------------------------
17
18 -- Resultat ----------------------------------
19 -- SYSDATETIME() : 2008-05-04 16:54:59.0370304
20 -- @Date_DataType: 2008-05-04
21 ----------------------------------------------
22


DATETIME



Der Datentyp DATETIME speichert Datum und Zeit Informationen.



Der Bereich für diesen Datentyp liegt zwischen 1753-01-01 00:00:00 - 9999-12-31 23:59:59.997 (Jahr - Monat - Tag Stunden : Minuten : Sekunden .Sekundenbruchteile).



Die Genauigkeit der Sekundenbruchteile kann bei diesem Datentyp nicht festgelegt werden.



Der Speicherbedarf liegt bei 8 bytes.



1 -- DATETIME --------------------------------------------------------------------------
2 -- Format : Jahr - Monat - Tag Stunden : Minuten : Sekunden .Sekundenbruchteile
3 -- Year - Month - Day Hours : Minutes : Seconds .Fractional Seconds
4
5 -- Range : 1753-01-01 00:00:00 - 9999-12-31 23:59:59.997
6 -- Storage Size : 8 bytes
7 -- Default value: 1900-01-01 00:00:00
8 ---------------------------------------------------------------------------------------
9
10 -- Beispiel-Code ----------------------------------------------------------------------
11 DECLARE @DateTime_DataType DATETIME
12 SET @DateTime_DataType = SYSDATETIME()
13
14 PRINT SYSDATETIME()
15 PRINT @DateTime_DataType
16 ---------------------------------------------------------------------------------------
17
18 -- Resultat ---------------------------------------------------------------------------
19 -- SYSDATETIME() : 2008-05-04 16:29:41.1544224
20 -- @DateTime_DataType: 2008-05-04 16:51
21 ---------------------------------------------------------------------------------------
22


DATETIME2 - NEU



Als Erweiterung des Datentyps DATETIME, speichert DATETIME2 einen größeren Datumsbereich und eine größere Genauigkeit beim Sekundenbruchteil.



Der Bereich für diesen Datentyp liegt zwischen 0001-01-01 00:00:00 - 9999-12-31 23:59:59.9999999 (Jahr - Monat - Tag Stunden : Minuten : Sekunden [.Sekundenbruchteile]).



Die Genauigkeit der Sekundenbruchteile kann beim Deklarieren der Variable festgelegt werden, welches zwischen 0 und 7 sein kann.



Der Speicherbedarf liegt bei 8 bytes.



1 -- DATETIME2 ---------------------------------------------------------------------------
2 -- Format : Jahr - Monat - Tag Stunden : Minuten : Sekunden [.Sekundenbruchteile]
3 -- Year - Month - Day Hours : Minutes : Seconds [.Fractional Seconds]
4
5 -- Range : 0001-01-01 00:00:00 - 9999-12-31 23:59:59.9999999
6 -- Storage Size : 8 bytes
7 -- Default value: 1900-01-01 00:00:00
8 ----------------------------------------------------------------------------------------
9
10 -- Beispiel-Code -----------------------------------------------------------------------
11 DECLARE @DateTime2_DataType DATETIME2(7)
12 SET @DateTime2_DataType = SYSDATETIME()
13
14 PRINT SYSDATETIME()
15 PRINT @DateTime2_DataType
16 ----------------------------------------------------------------------------------------
17
18 -- Resultat ----------------------------------------------------------------------------
19 -- SYSDATETIME() : 2008-05-04 16:22:33.6997728
20 -- @DateTime2_DataType: 2008-05-04 16:22:33.6997728
21 ----------------------------------------------------------------------------------------
22


DATETIMEOFFSET - NEU



Der Datentyp DATETIMEOFFSET speichert zusätzlich zu den Datumsangaben mit Zeit Informationen auch die Zeitzonen Information.



Der Bereich für diesen Datentyp liegt zwischen 0001-01-01 00:00:00 - 9999-12-31 23:59:59.9999999 (Jahr - Monat - Tag Stunden : Minuten : Sekunden [.Sekundenbruchteile] [+|- Stunden : Minuten]).



Die Genauigkeit der Sekundenbruchteile kann beim Deklarieren der Variable festgelegt werden, welches zwischen 0 und 7 sein kann.



Der Speicherbedarf liegt bei 10 bytes.



1 -- DATETIMEOFFSET -----------------------------------------------------------------------------------------------
2 -- Format : Jahr - Monat - Tag Stunden : Minuten : Sekunden [.Sekundenbruchteile] [+|- Stunden : Minuten]
3 -- Year - Month - Day Hours : Minutes : Seconds [.Fractional Seconds] [+|- Hours : Minutes]
4
5 -- Range : 0001-01-01 00:00:00 - 9999-12-31 23:59:59.9999999
6 -- Storage Size : 10 bytes
7 -- Default value: 1900-01-01 00:00:00 00:00
8 -----------------------------------------------------------------------------------------------------------------
9
10 -- Beispiel-Code ------------------------------------------------------------------------------------------------
11 DECLARE @DateTimeOffset_DataType DATETIMEOFFSET(7)
12 SET @DateTimeOffset_DataType = SYSDATETIME()
13
14 PRINT SYSDATETIME()
15 PRINT @DateTimeOffset_DataType
16 -----------------------------------------------------------------------------------------------------------------
17
18 -- Resultat -----------------------------------------------------------------------------------------------------
19 -- SYSDATETIME() : 2008-05-04 13:59:59.9918208
20 -- @DateTimeOffset_DataType: 2008-05-04 13:59:59.9918208 +00:00
21 -----------------------------------------------------------------------------------------------------------------
22


Für die manueller Zuweisung eines Wertes muss ein spezielles Format eingehalten werden. In diesem Format sind die Datumsangaben von den Zeitangaben mit dem Buchstaben „T“ voneinander getrennt. Die Angabe der Zeitzone erfolgt nach Sekundenbruchteile und beginnt mit einem „+“ oder „-„.



1 -- Beispiel-Code ------------------------------------------------------------------------------------------------
2 SET @DateTimeOffset_DataType = '2008-05-04T13:59:59.9918208+00:00'
3
4 PRINT @DateTimeOffset_DataType
5 -----------------------------------------------------------------------------------------------------------------
6
7 -- Resultat -----------------------------------------------------------------------------------------------------
8 -- @DateTimeOffset_DataType: 2008-05-04 13:59:59.9918208 +00:00
9 -----------------------------------------------------------------------------------------------------------------
10


Der Format des DATETIMEOFFSET Datentyps entspricht dem ISO 8601.



ISO 8601 ist ein internationaler Standard der ISO, der numerische Datumsformate und Zeitangaben beschreibt und Empfehlungen für den Gebrauch im internationalen Kontext ausspricht. Der Titel der Norm ist Data elements and interchange formats -- Information interchange -- Representation of dates and times, was im deutschen „Datenelemente und Austauschformate; Informationsaustausch; Darstellung von Datum und Uhrzeit“ bedeutet.



Quelle: Wikipedia





SMALLDATETIME



Der Datentyp SMALLDATETIME speichert Datumsangaben mit Zeit Information im 24-Stunden-Format ohne Sekundenbruchteile.



Der Bereich für diesen Datentyp liegt zwischen 1900-01-01 00:00:00 - 2079-06-06 23:59:59 (Jahr - Monat - Tag Stunden - Minuten – Sekunden).



1 -- SMALLDATETIME -------------------------------------------------
2 -- Format : Jahr - Monat - Tag Stunden : Minuten : Sekunden
3 -- Year - Month - Day Hours : Minutes : Seconds
4
5 -- Range : 1900-01-01 00:00:00 - 2079-06-06 23:59:59
6 -- Storage Size : 4 bytes
7 -- Default value: 1900-01-01 00:00:00
8 -----------------------------------------------------------------
9
10 -- Beispiel-Code ------------------------------------------------
11 DECLARE @SmallDateTime_DataType SMALLDATETIME
12 SET @SmallDateTime_DataType = SYSDATETIME()
13
14 PRINT SYSDATETIME()
15 PRINT @SmallDateTime_DataType
16 -----------------------------------------------------------------
17
18 -- Resultat -----------------------------------------------------
19 -- SYSDATETIME() : 2008-05-04 13:30:56.9855008
20 -- @SmallDateTime_DataType: 2008-05-04 13:31
21 -----------------------------------------------------------------
22


Die Minuten werden aufgerundet, wenn die Sekunden größer sind als 29.





TIME - NEU



Der Datentyp TIME speichert die Zeit ohne Datumsangaben im 24-Stunden-Format.



Der Bereich für diesen Datentyp liegt zwischen 00:00:00.0000000 und 23:59:59.9999999 (Stunden : Minuten : Sekunden [.Sekundenbruchteile]).



Die Genauigkeit der Sekundenbruchteile kann beim Deklarieren der Variable festgelegt werden, welches zwischen 0 und 7 sein kann.



1 -- TIME -----------------------------------------------------------
2 -- Format : Stunden : Minuten : Sekunden . Sekundenbruchteile
3 -- Hours : Minutes : Seconds . Fractional Seconds
4
5 -- Range : 00:00:00.0000000 - 23:59:59.9999999
6 -- Storage Size : 3 - 5 bytes
7 -- Default value: 00:00:00
8 -------------------------------------------------------------------
9
10 -- Beispiel-Code --------------------------------------------------
11 DECLARE @Time_DataType TIME(7)
12 SET @Time_DataType = SYSDATETIME()
13
14 PRINT SYSDATETIME()
15 PRINT @Time_DataType
16 -------------------------------------------------------------------
17
18 -- Resultat -------------------------------------------------------
19 -- SYSDATETIME() : 2008-05-04 13:00:15.0369088
20 -- @Time_DataType: 13:00:15.0369088
21 -------------------------------------------------------------------
22


Die Beispieldatei findet Ihr unter: DateTime_DataTypes_Sample_0001.sql

No comments: