Av: Jeffrey Yao | Uppdaterad: 2019-08-06 | Kommentarer (3) | Relaterat: Mer > Datum
Problem
Eftersom SQL Server 2012 har vi en ny funktion calledFORMAT(), det är mycket kraftfullt i formatering datetime och numeriska värden,vad är några bra användningsområden för denna funktion skall användas i det dagliga DBA arbete?
lösning
SQL Server T-SQL FORMAT() funktionen är i huvudsak en CLR typ systemfunktion,och som sådan, den .,Net formateringsregler gäller för denna funktion. Denna funktion returnsa nvarchar värde (eller null).
i mitt dagliga DBA-arbete ger den här funktionen mycket bekvämlighet som annarbehöver någon otäck T-SQL-konvertering och strängmanipulation för att få formatsibehovet.,TH>Anmäl dig
figur 1 – rapport
Antag att min källtabell och data är som följande:
Om vi vill få de data som visas som i , måste vi beräkna vilken som är en beräknad kolumn baserad på kolumnen.,/div>
men för att bli av med tvetydigheten kan vi använda funktionen FORMAT() enligt följande:
declare @dt date='2019-June-08';select FORMAT(@dt, 'ddd') -- returns Sat
så, för vårt exempel som nämns ovan, kan vi använda följande Fråga för att få detönskade resultatet:
select EnrollDate, WeekDay=format(EnrollDate, 'ddd'), NewMembersfrom tempdb.dbo.NewAccount;
resultatet är:
använd SQL Server-format för att få olika numeriska visningsformat
det finns många krav på hur numeriska data visas, till exempel en tusenseparator var tredje siffra, ett procenttecken, ett valutaprefix eller ett annat formatnär minusvärdet påträffas., Följande tabell listar några vanligastenumeriska värdeformat.
en praktisk användning av format visas i följande exempel, d. v. s. tidigarenär jag behöver kontrollera radtal för tabeller i en databas, tycker jag att det är mycket besvärligt att räkna vilka mycket höga tal som är utan kommaavskiljaren, särskilt när du har hundratals millioner rader eller mer. Följande kod listar raderna i varje tabell i databasen .
kolumnen har ett kommatecken för varje 3 siffror, vilket gör läsningmycket enklare än kolumnen.,
använd SQL Server-FORMAT för att visa SQL Server Agent jobbkörning varaktighet
SQL Server jobbhistorik tabledbo.sysjobhistory har en kolumn som heter som visas nedan:
det här är en heltalskolumn, när jag behöver skapa en rapport vill jag verkligen ha detatt vara HH:MM:SS-format, till exempel om run_duration är 1, Vill jag att det ska vara 00:00:01, fler exempel är som listade i följande tabell.,
Run_value | förväntat visningsformat |
---|---|
12 | 00:00:12 |
123 | 00:01:23 |
1234 | 00:12:34 |
12345 | 01:23:45 |
123456 | 12:34:56 |
251234 | 1D+01:12:34 |
Så hur kan vi uppnå detta?
tricket här är att jag kommer att använda en icke-dokumenterad men enkel funktion i msdbdatabase, dbo.,agent_datetime, för att komponera en datetime-värde genom att mata in en dummy värde,som 20000101, för @datum som parameter och använda kolumnen för @gången parameter,och sedan använda FORMAT() för att returnera HH:MM:SS formaterade resultatet.
för att illustrera, kommer jag att skapa en tabell och fylla den med somedata som simulerar kolumnen i dbo.sysjobhistory bord.
med följande kod kan jag konvertera värdet från hhmmssint till HH:MM:SS strängvärde.,
resultatet är som följer, precis vad jag vill:
sammanfattning
i det här tipset har vi granskat funktionen format() som introducerades i SQL Server 2012 och listat några praktiska exempel somannars är svåra att implementera. Funktionen ger bekvämlighet fordaily DBA rapport arbete och när den används på rätt sätt, hjälper funktionen att göra koden koncis,lätt att förstå och enkel att underhålla.
jag diskuterade inte om kulturparametern som används iformat () – funktionen., Denna kulturparameter kan vara mycket användbar i vissa kulturerelerade format arbete, såsom valutatecken, vardag namn, datumformat (dvs. år/månad/dageller månad/dag / år, etc.). I vissa företag med kontor över hela världen kan vi bygganågra frågor som kommer att generera kulturkompatibla resultat.
nästa steg
Du kan läsa några andra bra tips om MSSQLTips.com pratar om samma ämne.
Vänligen dela dina egna resultat eller kreativ användning av denna funktion.,
- format SQL Server datum med FORMAT funktion
- nytt FORMAT och CONCAT funktioner i SQL Server 2012
- SQL Server-funktion för att konvertera heltal datum till datetime format
det finns också en mycket intressant artikel diskuterar vissa brister oftheFORMAT() funktion.,
Senast uppdaterad: 2019-08-06
om författaren
Visa alla mina tips
- fler Databasutvecklartips…