Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Benutzerdefinierte Formatzeichenfolgen für Datum/Uhrzeit Unterstützt von FORMAT() in SQL Server

Dieser Artikel enthält eine Referenz für die benutzerdefinierten Formatbezeichner für Datum und Uhrzeit, die beim Formatieren von Datums- und/oder Uhrzeitangaben mit FORMAT() verwendet werden können Funktion in SQL Server, zusammen mit Beispielen.

Sie können jeden dieser Formatbezeichner kombinieren, um eine benutzerdefinierte Formatzeichenfolge zu erstellen. Unten finden Sie ein Codebeispiel und eine Erläuterung, wie benutzerdefinierte Formatzeichenfolgen funktionieren.

Die Beispiele in der Tabelle gehen von einem datetimeoffset aus Wert von 2080-05-01 23:09:08.1234567 +07:00 .

Zeichenfolge formatieren Beschreibung Beispiel
d Der Tag des Monats, von 1 bis 31. 1
dd Der Tag des Monats, von 01 bis 31. 01
ddd Der abgekürzte Name des Wochentags. Mi
dddd Der vollständige Name des Wochentags. Mittwoch
f Die Zehntelsekunden in einem Datums- und Zeitwert. 1
ff Die Hundertstelsekunde in einem Datums- und Zeitwert. 12
fff Die Millisekunden in einem Datums- und Zeitwert. 123
ffff Die Zehntausendstelsekunde in einem Datums- und Zeitwert. 1234
fffff Die Hunderttausendstelsekunde in einem Datums- und Zeitwert. 12345
ffffff Die Millionstelsekunden in einem Datums- und Zeitwert. 123456
fffffff Die zehn Millionstel Sekunden in einem Datums- und Zeitwert. 1234567
F Wenn nicht Null, die Zehntelsekunden in einem Datums- und Zeitwert. 1
FF Wenn nicht Null, die Hundertstelsekunden in einem Datums- und Uhrzeitwert. 12
FFF Wenn nicht Null, die Millisekunden in einem Datums- und Zeitwert. 123
FFFF Wenn nicht Null, die Zehntausendstelsekunde in einem Datums- und Zeitwert. 1234
FFFFF Wenn nicht Null, die Hunderttausendstelsekunde in einem Datums- und Zeitwert. 12345
FFFFFF Wenn nicht Null, die Millionstelsekunde in einem Datums- und Uhrzeitwert. 123456
FFFFFFF Wenn nicht Null, die Zehnmillionstelsekunde in einem Datums- und Zeitwert. 1234567
g Der Zeitraum oder die Ära. n. Chr.
gg Der Zeitraum oder die Ära. n. Chr.
h Die Stunde mit einer 12-Stunden-Uhr von 1 bis 12. 11
hh Die Stunde, unter Verwendung einer 12-Stunden-Uhr von 01 bis 12. 11
H Die Stunde im 24-Stunden-Format von 0 bis 23. 23
HH Die Stunde im 24-Stunden-Format von 00 bis 23. 23
K Zeitzoneninformationen. +07:00
m Die Minute, von 0 bis 59. 9
mm Die Minute, von 00 bis 59. 09
M Der Monat von 1 bis 12. 5
MM Der Monat von 01 bis 12. 05
MMM Der abgekürzte Name des Monats. Mai
MMMM Der vollständige Name des Monats. Mai
s Die zweite, von 0 bis 59. 8
ss Die zweite, von 00 bis 59. 08
t Das erste Zeichen der AM/PM-Bezeichnung. P
tt Die AM/PM-Bezeichnung. PN
y Das Jahr, von 0 bis 99. 80
yy Das Jahr, von 00 bis 99. 80
yyy Das Jahr mit mindestens drei Ziffern. 2080
yyyy Das Jahr als vierstellige Zahl. 2080
yyyyy Das Jahr als fünfstellige Zahl. 02080
z Stunden-Offset von UTC, ohne führende Nullen. +7
zz Stunden-Offset von UTC, mit einer führenden Null für einen einstelligen Wert. +07
zzz Stunden- und Minutenversatz von UTC. +07:00
: Das Zeittrennzeichen. :
/ Das Datumstrennzeichen. /
"string" Literalzeichenfolgetrennzeichen. Zeichenfolge
% Definiert das folgende Zeichen als benutzerdefinierten Formatbezeichner.
\ Das Escape-Zeichen.

Alle anderen Zeichen werden unverändert in die Ergebniszeichenfolge kopiert.

Wichtig: Wenn Sie eine Zeichenfolge mit einem benutzerdefinierten Format aus einem Zeichen verwenden, sollten Sie ihr das Prozentzeichen voranstellen (% ). Alternativ können Sie ein Leerzeichen hinzufügen. Wenn Sie dies nicht tun, erhalten Sie entweder NULL oder der Formatbezeichner könnte als Standardformatbezeichner interpretiert werden, und Sie erhalten unbeabsichtigte Ergebnisse.

Was sind benutzerdefinierte Formatzeichenfolgen?

Eine benutzerdefinierte Formatzeichenfolge besteht aus einem oder mehreren benutzerdefinierten Formatbezeichnern. Die obige Tabelle listet die benutzerdefinierten Formatbezeichner auf, die zum Formatieren von Datums- und Zeitwerten in eine Zeichenfolge verfügbar sind.

Es gibt auch standardmäßige Formatzeichenfolgen für Datum und Uhrzeit. Jedes davon ist ein Alias ​​für eine benutzerdefinierte Formatzeichenfolge. Standardformatzeichenfolgen bestehen aus einem einzigen Formatbezeichner, sodass sie schneller zu verwenden sind (aber weniger flexibel als benutzerdefinierte Formatzeichenfolgen).

Jede Formatzeichenfolge, die keine standardmäßige Formatzeichenfolge für Datum und Uhrzeit ist, wird als benutzerdefinierte Formatzeichenfolge für Datum und Uhrzeit interpretiert.

Anwendungsbeispiel

Benutzerdefinierte Formatbezeichner funktionieren so, dass Sie sie kombinieren können, um eine benutzerdefinierte Formatzeichenfolge zu bilden, wenn Sie FORMAT() verwenden Funktion. Dies bestimmt, wie das Ergebnis formatiert wird.

Hier sind einige Beispiele:

DECLARE @date datetimeoffset;
SET @date = '2080-05-01 23:09:08.1234567 +07:00';
SELECT 
  FORMAT(@date, 'd, MMM yy') AS 'd, MMM yy',
  FORMAT(@date, 'dd, MMMM yyyy') AS 'dd, MMMM yyyy',
  FORMAT(@date, 'dddd, MMM dd yyyy') AS 'dddd, MMM dd yyyy',
  FORMAT(@date, 'hh:mm:ss') AS 'hh:mm:ss',
  FORMAT(@date, 'hh:mm tt') AS 'hh:mm tt';

Ergebnis:

+-------------+-----------------+------------------------+------------+------------+
| d, MMM yy   | dd, MMMM yyyy   | dddd, MMM dd yyyy      | hh:mm:ss   | hh:mm tt   |
|-------------+-----------------+------------------------+------------+------------|
| 1, May 80   | 01, May 2080    | Wednesday, May 01 2080 | 11:09:08   | 11:09 PM   |
+-------------+-----------------+------------------------+------------+------------+

Es ermöglicht also viel Flexibilität bei der Darstellung Ihrer Daten und Zeiten.

Hier ist ein Beispiel für die Verwendung einer Formatzeichenfolge, die aus einem einzigen Formatbezeichner besteht.

DECLARE @date datetimeoffset;
SET @date = '2080-05-01 23:09:08.1234567 +07:00';
SELECT 
  FORMAT(@date, '%d') AS '%d',
  FORMAT(@date, '%M') AS '%M',
  FORMAT(@date, '%K') AS '%K',
  FORMAT(@date, '%z') AS '%z';

Ergebnis:

+------+------+--------+------+
| %d   | %M   | %K     | %z   |
|------+------+--------+------|
| 1    | 5    | +07:00 | +7   |
+------+------+--------+------+

Wie bereits erwähnt, sollten Sie diesen ein Prozentzeichen voranstellen, um zu vermeiden, dass NULL erhalten wird und damit der Formatbezeichner nicht versehentlich als Standardformatzeichenfolge interpretiert wird.

Folgendes passiert, wenn ich das Prozentzeichen aus dem vorherigen Beispiel entferne:

DECLARE @date datetimeoffset;
SET @date = '2080-05-01 23:09:08.1234567 +07:00';
SELECT 
  FORMAT(@date, 'd') AS 'd',
  FORMAT(@date, 'M') AS 'M',
  FORMAT(@date, 'K') AS 'K',
  FORMAT(@date, 'z') AS 'z';

Ergebnis:

+----------+-------+------+------+
| d        | M     | K    | z    |
|----------+-------+------+------|
| 5/1/2080 | May 1 | NULL | NULL |
+----------+-------+------+------+

Wir erhalten ein völlig anderes Ergebnis.