Problem:
Sie möchten einen Datumswert in SQL Server in einem anderen Format anzeigen.
Beispiel:
Unsere Datenbank hat eine Tabelle namens company
mit Daten in den Spalten id (Primärschlüssel), Name und start_date .
id | Name | Startdatum |
---|---|---|
1 | Lisa-Bank | 2019-01-20 |
2 | Kreditfinanzinstitut | 2018-03-14 |
3 | Williams-Holding | 2019-10-28 |
Konvertieren wir für jedes Unternehmen das Startdatum in ein neues Format, "JJJJ/MM/TT", wobei JJJJ ein vierstelliges Jahr, MM ein zweistelliger Monat und TT ein zweistelliger Tag ist.
Lösung 1:
Wir verwenden CONVERT()
Funktion. Hier ist die Abfrage, die Sie schreiben würden:
SELECT CONVERT(NVARCHAR, start_date, 111 ) AS new_date FROM company;
Hier ist das Ergebnis:
name | Startdatum |
---|---|
Lisa-Bank | 2019/01/20 |
Credit Financial Institute | 14.03.2018 |
Williams-Holding | 28.10.2019 |
Diskussion:
Verwenden Sie CONVERT()
Funktion, um das Format eines Datums aus einer bestimmten Spalte oder einem Ausdruck zu ändern.
Diese Funktion akzeptiert drei Argumente:
- Der neue Datentyp (in unserem Beispiel NVARCHAR).
- Ein Ausdruck oder Spaltenname, der das zu formatierende Datum enthält (in unserem Beispiel das
start_date
Spalte). - Ein optionaler Stilcode als ganze Zahl. (In unserem Beispiel zeigt der Stil „111“ das Datum mit Schrägstrichen an, um die Teile zu trennen.)
Die folgende Tabelle zeigt die beliebtesten Codes für Datumsformate:
Code | Beschreibung |
---|---|
101 | 30.11.2019 |
102 | 30.11.2019 |
103 | 30.11.2019 |
104 | 30.11.2019 |
105 | 30.11.2019 |
110 | 30.11.2019 |
111 | 30.11.2019 |
Eine umfassende Liste von Formatstilen finden Sie in der T-SQL-Dokumentation.
Die obige Abfrage hat das Format des Datums 2019-01-20 von Lisa Bank in eine Zeichenfolge geändert, die das Datum „2019/01/20“ enthält.
Lösung 2:
In SQL Server 2012 und höher können Sie das FORMAT()
verwenden Funktion zum Ändern von Datums-/Zeitformaten. Mit den folgenden Zeichen geben Sie das gewünschte Format an:
Muster | Beschreibung |
---|---|
dd | Tag im Bereich 01-31 |
MM | Monat im Bereich 01-12 |
jj | zweistellige Jahreszahl |
jjjj | 4-stelliges Jahr |
HH | Stunde im Bereich 00-23 |
mm | Minuten im Bereich 00-59 |
ss | Sekunden im Bereich 00-59 |
Hier ist die Abfrage, die Sie mit FORMAT() schreiben würden:
SELECT FORMAT(start_date, ‘yyyy-MM-dd’ ) AS new_date FROM company;
Das erste Argument ist der neu zu formatierende datetime/date/time-Wert. Die zweite ist eine Zeichenfolge, die das Muster des neuen Formats enthält. Diese Funktion gibt einen NVARCHAR-Datentyp zurück. Verwenden Sie FORMAT()
wenn Sie mit SQL Server 2012 oder höher arbeiten und Daten/Zeiten in Zeichenfolgen konvertieren möchten, die die formatierten Daten/Zeiten enthalten.