In vielen SQL-Abfragen gehört das Formatieren von Datumsangaben oder Geldbeträgen einfach dazu.
Steht ein Datum im DATETIME-Datentyp in der Datenbank, soll dem Anwender nicht "2026-07-17 10:31:27.253" angezeigt werden, sondern ein leicht lesbares Format. Das Gleiche gilt für Geldbeträge. Handelt es sich um große Zahlen, so ist die Ausgabe von "100000.00" wenig hilfreich, schnell kann eine Null zu viel oder zu wenig wahrgenommen werden.
Für beide Anwendungsfälle lässt sich mit kurzen SQL-Ausdrücken ein besser lesbares Format erzeugen.
Datumsangaben formatieren
Hier gibt es zwei Herangehensweisen, CONVERT() und FORMAT(). Beides sind SQL-Funktionen, die die Lesbarkeit von Datumsangaben verbessern. Während die CONVERT()-Funktion auch mit großen Datenmengen zügig arbeitet, erlaubt die FORMAT()-Funktion mehr Flexibilität.
Nehmen wir das Beispiel von oben. In Deiner Datenbank steht im DATETIME-Datentyp "2026-07-17 10:31:27.253" und die Tabellenspalte bzw. das Feld ist mit MeinDatum benannt. Jetzt lässt sich mit folgender kurzer CONVERT()-Anweisung daraus ein gut lesbares Ergebnis erzeugen:
CONVERT(VARCHAR(10), MeinDatum, 104)
-- Ergebnis: 17.07.2026Damit bist Du im deutschsprachigen Raum in den meisten Fällen bereits am Ziel. Kurze Erklärung: Die CONVERT()-Funktion wandelt einen Datentyp in einen anderen um. Hier lag MeinDatum im DATETIME-Typ vor und wurde in den VARCHAR-Datentyp umgewandelt. VARCHAR ist flexibel, da es einfacher Text ist und sich so fürs Darstellen gut eignet. Die 10 in Klammern gibt an, dass der Ausgabewert maximal 10 Zeichen lang sein darf, was genau zum deutschen Datumsformat passt. Dass das Datum das typische Format des deutschsprachigen Raums zeigt, wird durch die letzte Zahl im Code, 104, erreicht. 104 ist einfach der Style-Parameter für das deutsche Datumsformat. Verwendest Du hier 101, wird im Datum die Monatsangabe zuerst genannt, also typisch für den englischen Sprachraum.
Das gleiche Ergebnis kannst Du mit der FORMAT()-Funktion erreichen:
FORMAT(MeinDatum, 'dd.MM.yyyy', 'de-DE')
-- Ergebnis: 17.07.2026Auch hier kurz erklärt: In der FORMAT()-Funktion gibst Du zuerst das Datum an, das Du umwandeln möchtest. Als Zweites kannst Du angeben, wie das Zielformat aussieht, hier 'dd.MM.yyyy' für Tag, Monat und Jahr, und zuletzt gibst Du die sogenannte Kulturangabe an, also hier 'de-DE', da wir das typische Format für den deutschsprachigen Raum erhalten möchten.
Wie flexibel die Darstellung mit der FORMAT()-Funktion ist, zeigt sich hier:
FORMAT(MeinDatum, 'dd.MM.yyyy HH:mm', 'de-DE')
-- Ergebnis: 17.07.2026 10:31Hier kann durch die Angabe von 'dd.MM.yyyy HH:mm' genau der Abstand zwischen dem Datums- und dem Uhrzeit-Teil in der Ausgabe festgelegt werden, indem Du eine beliebige Anzahl an Leerzeichen verwendest. Datum und Uhrzeit werden in der gleichen Zelle ausgegeben, aber bleiben durch größeren Abstand gut lesbar.
Geldbeträge formatieren
Geldbeträge formatierst Du am besten mit der FORMAT()-Funktion. Steht in Deiner Datenbank ein Betrag mit der Bezeichnung MeinBetrag von 100000 im MONEY-Datentyp, lässt sich mit der folgenden kurzen SQL-Anweisung ein gut lesbares Ergebnis erzielen:
FORMAT(MeinBetrag, 'N2', 'de-DE')
-- Ergebnis: 100.000,00Das ist in den meisten Fällen schon genau das, was Du brauchst. Du gibst zuerst den Betrag an, dessen Darstellung Du optimieren möchtest. Dann den Formatstring 'N2', um 2 Nachkommastellen anzeigen zu lassen, und als Drittes, wie beim Datum, die Kulturangabe ('de-DE'). Leicht lässt sich durch Veränderung der Kulturangabe auf 'en-US' auch die typisch amerikanische Darstellung mit Komma als 1000er-Trennzeichen und Punkt als Dezimaltrennzeichen erhalten.
Praktisch auch, dass sich mit 'C2' statt 'N2' als Formatstring direkt ein €-Zeichen einfügen lässt:
FORMAT(MeinBetrag, 'C2', 'de-DE')
-- Ergebnis: 100.000,00 €Dabei ist die Kombination aus 'C2' als Formatstring und der Kulturangabe vielseitig, weil sich mit 'C2' und 'en-US' ganz leicht eine Darstellung des Betrages in $ erhalten lässt.
Auch für die Darstellung von Prozentzahlen ist die FORMAT()-Funktion bestens geeignet:
FORMAT(0.1234, 'P', 'de-DE')
-- Ergebnis: 12,34 %Fazit
Meist reicht in der Praxis je ein SQL-Ausdruck, um Datumsangaben und Geldbeträge sehr gut lesbar darzustellen. Nutze für Datumsangaben CONVERT(VARCHAR(10), MeinDatum, 104) und für Geldbeträge FORMAT(MeinBetrag, 'N2', 'de-DE') und sehr schnell wirst Du diese ohne großes Nachdenken fast automatisch einsetzen. Wenn Du dann noch im Hinterkopf hast, dass beide Funktionen etwas angepasst noch deutlich flexibler sind, kannst Du bei Bedarf sehr leicht nachschlagen, welche Eingaben genau zu Deinem Zielformat führen.