SQL-Datumsformate mit CONVERT – Das Nachschlagewerk

📅 SQL SERVER · T-SQL

Datumsformate mit CONVERT

Die ultimative Referenz für die Formatierung von Datums- und Zeitwerten mit der CONVERT-Funktion – inklusive aller relevanten Formatcodes und Beispielen.

🎯 Zielgruppe: SQL-Entwickler, Datenbankadministratoren 📅 Gültig für SQL Server 2008 – 2025

Syntax & Funktionsweise

So funktioniert CONVERT mit Datumsformaten

Die CONVERT-Funktion wandelt einen Ausdruck von einem Datentyp in einen anderen um. Für Datumsformate wird ein Style-Code (Formatcode) verwendet, der das Ausgabeformat bestimmt.

CONVERT(data_type(length), expression, style)
  • data_type: Zieldatentyp (meist VARCHAR oder NVARCHAR).
  • expression: Das Datum (z. B. GETDATE(), SYSDATETIME() oder eine Datumsspalte).
  • style: Der Formatcode (siehe Tabelle).
💡 Wichtig: Der Style-Code bestimmt sowohl das Format als auch die Interpretation von Eingabestrings bei der Konvertierung in ein Datum.

Die wichtigsten Formatcodes im Überblick

Meistgesuchte Formate für Deutschland und international
Style-CodeFormat (Ausgabe)Beispiel (für 2026-05-08 14:30:00)Typ
104dd.mm.yyyy08.05.2026Deutsch (mit Punkten)
105dd-mm-yyyy08-05-2026Deutsch (mit Bindestrichen)
103dd/mm/yyyy08/05/2026Britisch/Französisch
101mm/dd/yyyy05/08/2026US-amerikanisch
102yyyy.mm.dd2026.05.08ANSI (mit Punkten)
112yyyymmdd20260508ISO (kompakt) – ideal für Dateinamen
23yyyy-mm-dd2026-05-08ISO 8601 (nur Datum)
20yyyy-mm-dd HH:mi:ss2026-05-08 14:30:00ODBC kanonisch (Datum + Zeit)
21yyyy-mm-dd HH:mi:ss.mmm2026-05-08 14:30:00.000ODBC mit Millisekunden
8HH:mi:ss14:30:00Nur Zeit (24h)
14HH:mi:ss:mmm14:30:00:000Zeit mit Millisekunden
126yyyy-mm-ddThh:mi:ss.mmm2026-05-08T14:30:00.000ISO 8601 (mit T)
130dd mon yyyy hh:mi:ss:mmmAM/PM08 May 2026 02:30:00:000PMHijri (islam. Kalender)
131dd/mm/yyyy hh:mi:ss:mmmAM/PM08/05/2026 02:30:00:000PMHijri (mit Schrägstrichen)

Beispiele mit CONVERT im Einsatz

Praktische Abfragen zum direkten Nachnutzen

Deutsche Formate (Punkte)

-- dd.mm.yyyy 
SELECT CONVERT(VARCHAR(10), GETDATE(), 104) AS Datum; 
-- Ergebnis: 08.05.2026 
 
-- dd-mm-yyyy 
SELECT CONVERT(VARCHAR(10), GETDATE(), 105);

ISO-Formate für Sortierung

-- yyyy-mm-dd (ISO) 
SELECT CONVERT(VARCHAR(10), GETDATE(), 23); 
 
-- yyyymmdd (kompakt) 
SELECT CONVERT(VARCHAR(8), GETDATE(), 112);

Datum + Uhrzeit

-- yyyy-mm-dd HH:mi:ss 
SELECT CONVERT(VARCHAR(19), GETDATE(), 20); 
 
-- Mit Millisekunden 
SELECT CONVERT(VARCHAR(23), GETDATE(), 21);

Nur Uhrzeit

-- HH:mi:ss 
SELECT CONVERT(VARCHAR(8), GETDATE(), 8); 
 
-- Mit Millisekunden 
SELECT CONVERT(VARCHAR(12), GETDATE(), 14);
📌 Tipp: Für internationale Anwendungen verwenden Sie am besten die ISO-Formate (23, 20, 21, 126) – sie sind eindeutig und nicht von Spracheinstellungen abhängig.

Von String zu Datum – die Umkehrrichtung

Wie man Text sicher in datetime umwandelt

CONVERT kann nicht nur Datumsangaben formatieren, sondern auch Zeichenketten in echte Datumsdatentypen umwandeln. Dabei ist der Style-Code entscheidend für die korrekte Interpretation.

-- Deutscher String (dd.mm.yyyy) in DATE 
DECLARE @dateStr NVARCHAR(10) = '08.05.2026'; 
SELECT CONVERT(DATE, @dateStr, 104) AS DeutschesDatum; 
 
-- ISO-String (yyyy-mm-dd) in DATETIME2 
DECLARE @isoStr NVARCHAR(10) = '2026-05-08'; 
SELECT CONVERT(DATETIME2, @isoStr, 126);
⚠️ Vorsicht bei US-Formaten: Der Style 101 interpretiert mm/dd/yyyy. Wenn Sie versehentlich einen deutschen String (dd.mm.yyyy) mit Style 101 konvertieren, erhalten Sie entweder einen Fehler oder falsche Daten (Monat/Tag werden vertauscht).

Alle Formatcodes ab SQL Server 2012 (komplett)

Die vollständige Referenz für die Praxis
📋 Vollständige Liste der Style-Codes (zum Aufklappen)
StyleFormatTyp
1mm/dd/yyUS
2yy.mm.ddANSI
3dd/mm/yyBritisch/Französisch
4dd.mm.yyDeutsch
5dd-mm-yyItalienisch
6dd Mon yyAbgekürzter Monat
7Mon dd, yyMonat Tag, Jahr
10mm-dd-yyUS
11yy/mm/ddJapanisch
12yymmddISO kompakt
101mm/dd/yyyyUS (4-stelliges Jahr)
102yyyy.mm.ddANSI
103dd/mm/yyyyBritisch/Franz.
104dd.mm.yyyyDeutsch
105dd-mm-yyyyItalienisch
106dd Mon yyyyAbgekürzter Monat
107Mon dd, yyyyMonat Tag, Jahr
108HH:mi:ssZeit (24h)
109Mon dd yyyy HH:mi:ss:mmmAM/PMStandard mit Millisek.
110mm-dd-yyyyUS
111yyyy/mm/ddJapanisch
112yyyymmddISO (kompakt)
113dd Mon yyyy HH:mi:ss:mmmEuropa mit Millisek.
114HH:mi:ss:mmmZeit mit Millisek.
120yyyy-mm-dd HH:mi:ssODBC kanonisch
121yyyy-mm-dd HH:mi:ss.mmmODBC mit Millisek.
126yyyy-mm-ddThh:mi:ss.mmmISO 8601
127yyyy-mm-ddThh:mi:ss.mmmZISO 8601 mit Zeitzone
130dd mon yyyy hh:mi:ss:mmmAM/PMHijri
131dd/mm/yyyy hh:mi:ss:mmmAM/PMHijri

Alternativen: FORMAT vs. CONVERT

Was ist besser für die Formatierung?

CONVERT (empfohlen für Performance)

  • Sehr schnell (kleiner Overhead)
  • Abhängig von festen Style-Codes
  • Nur vordefinierte Formate möglich
  • Ideal für große Datenmengen

FORMAT (ab 2012, flexibel)

  • Langsamer (CLR-basiert)
  • Unterstützt .NET-Formatstrings (z. B. "dddd, MMMM yyyy")
  • Kultur-abhängig (z. B. "de-DE", "en-US")
  • Für kleine Ergebnismengen oder Berichte geeignet
-- FORMAT Beispiel (flexibel, aber langsamer) 
SELECT FORMAT(GETDATE(), 'dddd, dd. MMMM yyyy', 'de-DE') AS DeutschLang; 
-- Ergebnis: Donnerstag, 08. Mai 2026 
 
-- Vergleich: CONVERT ist ca. 3-5x schneller 
SELECT CONVERT(VARCHAR(10), GETDATE(), 104);
⚠️ Performance-Warnung: In Schleifen oder bei großen Tabellen (> 10.000 Zeilen) sollten Sie CONVERT bevorzugen. FORMAT verbraucht signifikant mehr CPU.

Häufige Fehler und deren Lösung

Fallstricke bei der Datumskonvertierung

❌ Fehler: "Die Konvertierung eines nvarchar-Datentyps in einen datetime-Datentyp führte zu einem Wert außerhalb des gültigen Bereichs."

Ursache: Der übergebene String entspricht nicht dem erwarteten Format (z. B. deutscher String mit Style 101).

Lösung: Verwenden Sie den passenden Style-Code für Ihre Eingabe.

❌ Problem: Falsches Datum (Monat/Tag vertauscht)

Ursache: Unterschiedliche Ländereinstellungen. Beispiel: "05/08/2026" wird mit Style 101 als 5. August interpretiert, mit Style 103 als 8. Mai.

Lösung: Nutzen Sie immer den expliziten Style-Code – vertrauen Sie nicht auf die Standardeinstellungen der Sitzung.

-- Sicheres Parsen: Style immer angeben 
DECLARE @input NVARCHAR(10) = '08.05.2026'; 
SELECT CONVERT(DATE, @input, 104); -- sicher: deutsch 
 
-- Unsicher: Kein Style (hängt von Spracheinstellung ab) 
SELECT CONVERT(DATE, @input); -- riskant
Alle Angaben ohne Gewähr – getestet mit SQL Server 2016 bis 2025. | Weitere Tipps unter dtc-sql.de