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

So formatieren Sie ein Datum in T-SQL

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:

  1. Der neue Datentyp (in unserem Beispiel NVARCHAR).
  2. Ein Ausdruck oder Spaltenname, der das zu formatierende Datum enthält (in unserem Beispiel das start_date Spalte).
  3. 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.