SQL_Kurs

Datumsformate mit CONVERT

📅 SQL SERVER · T-SQL

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
Nächster SQL Server – QUOTED_IDENTIFIER & ANSI_NULLS
Cookies user preferences
We use cookies to ensure you to get the best experience on our website. If you decline the use of cookies, this website may not function as expected.
Accept all
Decline all
Analytics
Tools used to analyze the data to measure the effectiveness of a website and to understand how it works.
Google Analytics
Advertisement
If you accept, the ads on the page will be adapted to your preferences.
Google Ad
Save