Problem:
Sie möchten das Format eines Datumsfelds oder -werts in einer SQL Server-Datenbank ändern.
Beispiel:
Unsere Datenbank hat eine Tabelle namens Patient
mit Daten in den Spalten Id
, FirstName
, LastName
und RegistrationDate
.
ID | Vorname | Nachname | Registrierungsdatum |
---|---|---|---|
1 | Jane | Williams | 2019-06-20 |
2 | Gabriel | Braun | 02.02.2019 |
3 | Lora | Leute | 2016-11-05 |
Lassen Sie uns das Format des Registrierungsdatums jedes Patienten ändern. Wir schreiben zuerst den Namen des Wochentags, gefolgt von Monatstag und Name und einer vierstelligen Jahreszahl (z. B. „Freitag, 27. Dezember 2019“).
Lösung:
Wir verwenden die Funktion FORMAT(), um das Format des Datums im RegistrationDate
zu ändern Spalte.
SELECT FirstName, LastName, FORMAT(RegistrationDate ,'dddd, d MMMM, yyyy') AS FormattedRegistrationDate FROM Patient;
Hier ist das Ergebnis der Abfrage:
Vorname | Nachname | Formatiertes Registrierungsdatum |
---|---|---|
Jane | Williams | Donnerstag, 20. Juni 2019 |
Gabriel | Braun | Samstag, 2. Februar 2019 |
Lora | Leute | Samstag, 5. November 2016 |
Diskussion:
Wir können ändern, wie ein bestimmtes Datum mit der Funktion FORMAT() angezeigt wird. Diese Funktion akzeptiert zwei obligatorische Argumente und ein optionales Argument. In unserem Beispiel haben wir nur die beiden obligatorischen Argumente verwendet. Das erste ist ein Datum, das aus einer date/time/datetime-Spalte oder einem beliebigen Ausdruck stammen kann, der ein Datum oder eine Uhrzeit zurückgibt. (In unserem Beispiel verwenden wir die Spalte RegistrationDate
.) Das zweite Argument ist ein String, der das neue Datumsformat enthält. In unserem Beispiel haben wir 'dddd, dd MMMM, yyyy' verwendet :
- dddd – Der Name des Wochentags.
- d – Der Tag des Monats, von 1 bis 31.
- MMMM – Der vollständige Name des Monats.
- yyyy – Die vierstellige Jahreszahl.
Die folgende Tabelle enthält weitere Formatbezeichner für Datum/Uhrzeit:
Bezeichner | Beschreibung |
---|---|
d | Tag im Bereich 1-31 |
dd | Tag im Bereich 01-31 |
ddd | Der abgekürzte Name des Wochentags |
dddd | Der vollständige Name des Wochentags |
M | Monat von 1 bis 12 |
MM | Monat von 01 bis 12 |
MMM | Der abgekürzte Name des Monats |
MMMM | Der vollständige Name des Monats |
y | Zweistellige Jahreszahl von 0 bis 99 |
jj | Zweistellige Jahreszahl von 00 bis 99 |
jjjj | 4-stelliges Jahr |
g | Ära (z. B. A.D.) |
h | Stunde von 1 bis 12 (12-Stunden-Uhr) |
hh | Stunde von 01 bis 12 (12-Stunden-Uhr) |
H | Stunde von 0 bis 23 (24-Stunden-Uhr) |
HH | Stunde von 00 bis 23 (24-Stunden-Uhr) |
m | Minute von 0 bis 59 |
mm | Minute von 00 bis 59 |
s | Sekunde von 0 bis 59 |
ss | Sekunde von 00 bis 59 |
t | Erster Buchstabe von AM oder PM (z. B. 9A, 5P) |
tt | AM oder PM |
z | Stunden-Offset, ohne führende Null (z. B. +3) |
zz | Stunden-Offset, mit führender Null (z. B. +03) |
Weitere Informationen zu standardmäßigen Datums- und Zeitformaten und benutzerdefinierten Formaten finden Sie in der Microsoft-Dokumentation.
Wenn Sie dieses Datum für eine bestimmte Sprache und/oder ein bestimmtes Land formatieren möchten, verwenden Sie das dritte optionale Argument:Kultur . Dieses Argument ist eine Zeichenfolge, die den Kulturcode für eine bestimmte Region oder ein bestimmtes Land enthält. (Kulturcodes bestehen aus einem Sprachcode, einem Bindestrich und einem Ländercode.) Im folgenden Beispiel verwenden wir den Kulturcode für Deutschland, der den deutschen Sprachcode („de“) mit dem Ländercode für Deutschland kombiniert ('DE'), also 'de-DE'. Das resultierende Datum wird auf Deutsch angezeigt und so formatiert, wie es ein deutsches Publikum erwarten würde.
SELECT FirstName, LastName, FORMAT(RegistrationDate ,'dddd, d MMMM, yyyy', 'de-DE') AS FormattedRegistrationDate FROM Patient;
Hier ist das Ergebnis dieser Abfrage:
Vorname | Nachname | Registrierungsdatum |
---|---|---|
Jane | Williams | Donnerstag, 20. Juni 2019 |
Gabriel | Braun | Samstag, 2. Februar 2019 |
Lora | Leute | Samstag, 5. November 2016 |