Bewertung: 5 / 5

Stern aktivStern aktivStern aktivStern aktivStern aktiv
 

Problem

Datum und SQL-Server ist ein Thema für sich. Beim SQL Server wird das Datum immer mit einem Cast / Convert in ein neues Format gebracht, das Format kann aber nicht mit dd.mm.yyyy angegeben werden,
sondern mit Zahlen Codes.

Es gibt diverse Seiten die die genau Konvertierung zeigt, hier die wichtigsten für Deutsch und Englische SQL Server.

Weiter unten gibt es einen Link auf die Microsoft Seite mit allen Formatierungen.

 Aktuelle Sprache Deutsch

Format Beschreibung Ergebnis (9. märz 2000)
0 mon dd yyyy hh:miAM Mär 9 2000 6:40PM
100 mon dd yyyy hh:miAM Mär 9 2000 6:40PM
1 mm/dd/yy 03/09/00
101 mm/dd/yyyy 03/09/2000
2 yy.mm.dd 00.03.09
102 yyyy.mm.dd 2000.03.09
3 dd/mm/yy 09/03/00
103 dd/mm/yyyy 09/03/2000
4 dd.mm.yy 09.03.00
104 dd.mm.yyyy 09.03.2000
5 dd-mm-yy 09-03-00
105 dd-mm-yyyy 09-03-2000
6 dd mon yy 09 Mär 00
106 dd mon yyyy 09 Mär 2000
7 mon dd, yy Mär 09, 00
107 mon dd, yyyy Mär 09, 2000
8 hh:mm:ss 18:40:08
108 hh:mm:ss 18:40:08
9 mon dd yyyy hh:mi:ss:mmmAM Mär 9 2000 6:40:08:330PM
109 mon dd yyyy hh:mi:ss:mmmAM Mär 9 2000 6:40:08:330PM
10 mm-dd-yy 03-09-00
110 mm-dd-yyyy 03-09-2000
11 yy/mm/dd 00/03/09
111 yyyy/mm/dd 2000/03/09
12 yymmdd 000309
112 yyyymmdd 20000309
13 dd mon yyyy hh:mi:ss:mmm 09 Mär 2000 18:40:08:330
113 dd mon yyyy hh:mi:ss:mmm 09 Mär 2000 18:40:08:330
14 hh:mi:ss:mmm 18:40:08:330
114 hh:mi:ss:mmm 18:40:08:330
20 yyyy-mm-dd hh:mi:ss 2000-03-09 18:40:08
120 yyyy-mm-dd hh:mi:ss 2000-03-09 18:40:08
21 yyyy-mm-dd hh:mi:ss.mmm 2000-03-09 18:40:08.330
121 yyyy-mm-dd hh:mi:ss.mmm 2000-03-09 18:40:08.330

Aktuelle Sprache English

Format Beschreibung Ergebnis (9. märz 2000)
0 mon dd yyyy hh:miAM Mar 9 2000 6:46PM
100 mon dd yyyy hh:miAM Mar 9 2000 6:46PM
1 mm/dd/yy 03/09/00
101 mm/dd/yyyy 03/09/2000
2 yy.mm.dd 00.03.09
102 yyyy.mm.dd 2000.03.09
3 dd/mm/yy 09/03/00
103 dd/mm/yyyy 09/03/2000
4 dd.mm.yy 09.03.00
104 dd.mm.yyyy 09.03.2000
5 dd-mm-yy 09-03-00
105 dd-mm-yyyy 09-03-2000
6 dd mon yy 09 Mar 00
106 dd mon yyyy 09 Mar 2000
7 mon dd, yy Mar 09, 00
107 mon dd, yyyy Mar 09, 2000
8 hh:mm:ss 18:46:58
108 hh:mm:ss 18:46:58
9 mon dd yyyy hh:mi:ss:mmmAM Mar 9 2000 6:46:58:220PM
109 mon dd yyyy hh:mi:ss:mmmAM Mar 9 2000 6:46:58:220PM
10 mm-dd-yy 03-09-00
110 mm-dd-yyyy 03-09-2000
11 yy/mm/dd 00/03/09
111 yyyy/mm/dd 2000/03/09
12 yymmdd 000309
112 yyyymmdd 20000309
13 dd mon yyyy hh:mi:ss:mmm 09 Mar 2000 18:46:58:220
113 dd mon yyyy hh:mi:ss:mmm 09 Mar 2000 18:46:58:220
14 hh:mi:ss:mmm 18:46:58:220
114 hh:mi:ss:mmm 18:46:58:220
20 yyyy-mm-dd hh:mi:ss 2000-03-09 18:46:58
120 yyyy-mm-dd hh:mi:ss 2000-03-09 18:46:58
21 yyyy-mm-dd hh:mi:ss.mmm 2000-03-09 18:46:58.220
121 yyyy-mm-dd hh:mi:ss.mmm 2000-03-09 18:46:58.220

 Etwas spezieller Formatierungen 

Wenn das Datum mit dem Format YYYYMMDD geliefert wird

Speziell wird es wenn das Datum YYYYMMDD geliefert wird, das kann mit Standards gelöst werden aber etwas umständlicher. Hier eine Lösung für das Problem

CAST(CONVERT(VARCHAR(10), stupid_date, 112)   AS DATE)

 

Nützliche Funktionen für Datums-Berechnungen

Funktion Beschreibung
getdate() Gibt das aktuelle System Datum und Zeit aus als Timstamp, den Einstellungen entsprechendem Format.
Day

Gibt den Tag des Datums aus

Day(Datum)

Month

Gibt den Monat eines Datums aus

Month(Datum)

Year

Gibt das Jahr eines Monats aus

YEAR(datum)

DATEFROMPARTS

Gibt ein Datum aus, aus den Teilen des Datums

DATEFROMPARTS ( yearmonthday )

DATEDIFF

Differenz zwischen zwei Datum berechnen in der Einheit die in Datepart erfasst wird. Ausgabe ist immer ein Interger Wert!

DATEDIFF ( datepartstartdate , enddate)

 

DATEADD

Einen Wert zum Datum hinzufügen

DATEADD (datepartnumber , date )

number kann auch negativ sein, wenn die 

EOMONTH

Ende des Monats

EOMONTH ( start_date [, month_to_add ] )

month_to_add können auch negativ sein!

 Weitere Datums-Formatierungen sind unter 

https://docs.microsoft.com/en-us/sql/t-sql/functions/date-and-time-data-types-and-functions-transact-sql 

Was ist ein Datepart

In einigen Formatierungen wird von einem datepart gesprochen. Dabei geht es um den Teil des Datums der ausgegeben werden soll oder der zur Berechnung verwendet werden soll. Mögliche Werte für Datepart sind in der Tabelle unten aufgelistet. Die Liste ist nicht abschliessend.

datepart Abkürzungen
year yy, yyyy
quarter qq, q
month mm, m
dayofyear dy, y
day dd, d
week wk, ww
weekday dw
hour hh
minute mi, n
second ss, s
millisecond ms
microsecond mcs
nanosecond ns
TZoffset tz
ISO_WEEK isowk, isoww