A: Jeffrey Yao | Frissítve: 2019-08-06 | Hozzászólások (3) | Kapcsolódó: Több > Dátumok
Probléma
Mivel az SQL Server 2012, van egy új funkció calledFORMAT(), nagyon erős a formázás, datetime, valamint numerikus értékek,milyen jó felhasználása, ez a funkció használható a napi DBA munka?
megoldás
az SQL Server T-SQL FORMAT() függvény lényegében egy CLR típusú rendszerfüggvény, és mint ilyen, a .,Net formázási szabályok vonatkoznak erre a funkcióra. Ez a funkció returnsa nvarchar érték (vagy null érték).
Az én napi DBA munka, ez a funkció biztosítja a sok kényelmet, hogy otherwiseneed néhány csúnya T-SQL átalakítás, string manipuláció munka, hogy a formatsI szükség.,th>EnrollDate
1. Ábra – Jelentés
Feltételezzük, hogy a forrás táblázat, illetve az adatok, mint a következő:
Ha azt akarjuk, hogy az adatok jelennek meg, mint a mi kell számítani, amely a számított oszlop alapján az oszlop.,/div>
De lehet megszabadulni a kétértelműséget, akkor használja a FORMAT() függvényt a következőképpen:
declare @dt date='2019-June-08';select FORMAT(@dt, 'ddd') -- returns Sat
Tehát, példánkban a fent említett, használhatjuk a következő lekérdezés, hogy várt eredményt:
select EnrollDate, WeekDay=format(EnrollDate, 'ddd'), NewMembersfrom tempdb.dbo.NewAccount;
Az eredmény:
A SQL Server FORMÁTUM, hogy a Különböző Numerikus Kijelző Formátumok
sok követelmények, hogyan numerikus adatok jelennek meg, mint például egy thousandseparator minden 3 számjegy, egy százalék alá, egy pénznemet, előtag vagy más formatwhen mínusz érték tapasztalható., Az alábbi táblázat felsorolja a leggyakrabban használtnumerikus értékformátumok.
a formátum gyakorlati használata a következő példában jelenik meg, azaz korábbanamikor ellenőrizni kell az adatbázisban lévő táblázatok sorszámát, nagyon kellemetlennek találom, hogy kitaláljuk, milyen nagyon magas számok vannak vesszőelválasztó nélkül, különösen akkor, ha több száz millió sor vagy annál több van. A következő kód felsorolja az egyes táblázatok sorait az adatbázisban .
az oszlop vesszővel rendelkezik minden 3 számjegyhez, ami megkönnyíti az olvasástsokkal könnyebb, mint az oszlop.,
használja az SQL Server formátumot az SQL Server Agent Job Run időtartamának megjelenítéséhez
SQL Server job history tabledbo.sysjobhistory van egy oszlop neve az alábbiak szerint:
Ez egy egész oszlop, ha kell létrehozni egy jelentést, nagyon akarom thisto legyen HH:MM:SS formátumban, például ha run_duration 1, Azt akarom,hogy legyen 00:00:01, további példák szerepelnek a következő táblázatban.,
Run_value | Várható Display Format |
---|---|
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 |
Tehát, hogy tudjuk elérni ezt?
a trükk itt az, hogy egy nem dokumentált, mégis egyszerű funkciót fogok használni az msdbdatabase, dbo.,agent_datetime, hogy össze egy datetime értéket megadásával dummy érték,mint 20000101, a @date paraméter, majd az oszlop @time paraméter, majd a FORMAT (), hogy visszatérjen a HH:MM: SS formázott eredményt.
annak illusztrálására, létrehozok egy táblázatot, és feltöltöm a dbo oszlopát szimuláló somedata-val.sysjobhistory táblázat.
a következő kóddal konvertálhatom a hhmmssint értéket HH: MM: SS karakterlánc értékre.,
az eredmény a következő, pontosan az, amit akarok:
összefoglaló
ebben a tippben áttekintettük az SQL Server 2012-ben bevezetett format() függvényt, és felsoroltunk néhány gyakorlati példát, amelyeket más szempontból nehéz megvalósítani. A funkció kényelmesnaponta DBA jelentés munka, ha megfelelően használják, a funkció segít, hogy a kód tömör, könnyen érthető, egyszerű karbantartása.
nem beszéltem az intheFORMAT () függvényben használt kultúra paraméterről., Ez a kultúra paraméter nagyon hasznos lehet néhány kulturerelated formátumú munkában,például pénznem jel, hétköznap név, dátum formátum (azaz Év / hónap / napvagy hónap / nap / év stb.). Egyes cégek irodákkal szerte a világon, építhetünknéhány lekérdezés, amely létrehoz kultúra-kompatibilis eredményeket.
következő lépések
elolvashat néhány más jó tippet MSSQLTips.com ugyanarról a témáról beszélünk.
kérjük, ossza meg saját eredményeit vagy a funkció kreatív használatát.,
- Format SQL Server Dates with FORMAT Function
- New FORMAT and CONCAT Functions in SQL Server 2012
- SQL Server function to convert integer date to datetime format
van is egy nagyon érdekes cikk megvitatása néhány hiányosság oftheFORMAT () funkció.,
Utolsó frissítése: 2019-08-06
a szerzőről
tekintse meg az összes tippemet
- további adatbázis-Fejlesztő tippek…