Durch: Jeffrey Yao | Aktualisiert: 2019-08-06 | Kommentare (3) | Verwandte: Mehr > Daten
Problem
Seit SQL Server 2012, wir haben eine neue funktion calledFORMAT(), es ist sehr mächtig in formatierung datetime und numerische werte,was sind einige gute verwendung dieser Funktion für die tägliche DBA-Arbeit?
Lösung
Die SQL Server T-SQL FORMAT () Funktion ist im Wesentlichen eine CLR-Typ-Systemfunktion,und als solche, die .,Net Formatierungsregeln für diese Funktion gelten. Diese Funktion gibt einen nvarchar-Wert (oder Nullwert) zurück.
In meiner täglichen DBA-Arbeit bietet diese Funktion viel Komfort, der sonst einige böse T-SQL-Konvertierungs-und String-Manipulationsarbeiten erforderlich macht, um das Format zu erhalten, das ich benötige.,th>EnrollDate
Abbildung 1 – Bericht
Angenommen , meine Quelltabelle und Daten ist wie folgt:
Wenn wir die Daten wie in der anzeigen möchten, müssen wir berechnen, welche eine berechnete Spalte basierend auf der Spalte ist.,/div>
Aber um die Mehrdeutigkeit zu beseitigen, können wir die FORMAT() Funktion wie folgt verwenden:
declare @dt date='2019-June-08';select FORMAT(@dt, 'ddd') -- returns Sat
Also können wir für unser oben erwähntes Beispiel die folgende Abfrage verwenden, um dieverdrahtetes Ergebnis:
select EnrollDate, WeekDay=format(EnrollDate, 'ddd'), NewMembersfrom tempdb.dbo.NewAccount;
Das Ergebnis ist:
Verwenden Sie das SQL Server-FORMAT, um verschiedene numerische Anzeigeformate abzurufen
Es gibt viele Anforderungen an die Anzeige numerischer Daten, z. B. Tausendertrennzeichen alle 3 Ziffern, ein Prozentzeichen, ein Währungspräfix oder ein anderes Formatwenn ein Minuswert auftritt., Die folgende Tabelle listet einige am häufigsten verwendetnumerische Wertformate.
Eine praktische Verwendung des Formats wird im folgenden Beispiel gezeigt, dh vorherWenn ich Zeilenzahlen für Tabellen in einer Datenbank überprüfen muss, finde ich es sehr unpraktisch, herauszufinden, welche sehr hohen Zahlen ohne das Kommatrennzeichen sind, insbesondere wenn Sie Hunderte von Millionen Zeilen oder mehr haben. Der folgende code listet die Zeilen jeder Tabelle in der Datenbank .
Die Spalte hat ein Komma für alle 3 Ziffern, was das Lesenviel einfacher macht als die Spalte.,
Verwenden Sie das SQL Server-FORMAT, um die Laufzeit des SQL Server-Agent-Jobs anzuzeigen
SQL Server-Jobverlauf tabledbo.sysjobhistory hat eine Spalte mit dem Namen wie unten gezeigt:
Dies ist eine ganzzahlige Spalte, wenn ich einen Bericht generieren muss, möchte ich dies wirklich seinh:MM:SS Format, zum Beispiel, wenn run_duration 1 ist,möchte ich, dass es 00:00:01 ist, weitere Beispiele sind in der folgenden Tabelle aufgeführt.,
Run_value | Erwartetes Anzeigeformat |
---|---|
12 | 00:00:12 |
123 | 00:01:23 |
123 | 00:12:34 |
12345 | 01:23:45 |
123456 | 12:34:56 |
251234 | 1d+01:12:34 |
Wie können wir dies erreichen?
Der Trick hier ist, dass ich eine nicht dokumentierte, aber einfache Funktion in msdbdatabase, dbo, verwenden werde.,agent_datetime, um einen datetime-Wert zu erstellen,indem Sie einen Dummy-Wert wie 20000101 für den Parameter @date und die Spalte für den Parameter @time und dann FORMAT (), um das HH:MM:SS formatierte Ergebnis zurückzugeben.
Zur Veranschaulichung werde ich eine Tabelle erstellen und sie mit somedata füllen, die die Spalte in dbo simulieren.Tabelle sysjobhistory.
Mit dem folgenden Code kann ich den from HHMMSSint-Wert in den HH:MM:SS-Zeichenfolgenwert konvertieren.,
Das Ergebnis ist wie folgt, genau das, was ich will:
Zusammenfassung
In diesem Tipp haben wir die in SQL Server 2012 eingeführte Funktion Format() überarbeitet und einige praktische Beispiele aufgelistet, dieandere sind schwierig zu implementieren. Die funktion bietet komfort fordaily DBA bericht arbeit und wenn richtig verwendet, die funktion hilft zu machen code concise,leicht zu verstehen und einfach zu pflegen.
Ich habe nicht über den Kulturparameter diskutiert, der in der Funktion Format() verwendet wird., Dieser Kulturparameter kann in einigen culturerelated Format-Arbeiten sehr nützlich sein, z. B. Währungszeichen, Wochentagsname, Datumsformat (dh Jahr/Monat/Tag, Monat/Tag/Jahr usw.).). In einigen Unternehmen mit Büros auf der ganzen Welt können wir einige Abfragen erstellen, die kulturverträgliche Ergebnisse generieren.
Nächste Schritte
Sie können einige andere gute Tipps zu lesen MSSQLTips.com sprechen über das gleiche Thema.
Bitte teilen Sie Ihre eigenen Erkenntnisse oder kreative Nutzung dieser Funktion.,
- Formatieren Sie SQL Server-Daten mit der Formatfunktion
- Neues FORMAT und CONCAT-Funktionen in SQL Server 2012
- SQL Server-Funktion zum Konvertieren von ganzzahligem Datum in Datetime-Format
Es gibt auch einen sehr interessanten Artikel, in dem einige Mängel der Funktion Format ().,
Zuletzt aktualisiert: 2019-08-06
Über den Autor
Alle meine Tipps
- Weitere Tipps für Datenbankentwickler…