Database
 sql >> Datenbank >  >> RDS >> Database

So ändern Sie Datums- und Uhrzeitformate in T-SQL

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