: Jeffrey Yao | Aktualizováno: 2019-08-06 | Komentáře (3) | Související: Více > Data
Od vydání serveru SQL Server 2012, máme novou funkci calledFORMAT(), to je velmi silný ve formátování datetime a číselné hodnoty,jaké jsou některé dobré použití této funkce musí být použit v každodenním DBA práce?
řešení
funkce SQL Server T-SQL FORMAT() je v podstatě funkcí systému typu CLR a jako taková.,Na tuto funkci se vztahují pravidla pro formátování sítě. Tato funkce vrací hodnotu nvarchar (nebo nulovou hodnotu).
v mé každodenní práci DBA poskytuje tato funkce spoustu pohodlí, které jinakpotřebujete nějakou ošklivou konverzi T-SQL a manipulaci s řetězci, abyste získali potřebu formatsI.,th>EnrollDate
Obrázek 1 – Zpráva
Předpokládejme, můj zdroj tabulky a data, jako je následující:
chceme-Li získat data zobrazí jako v ,, musíme vypočítat, která je vypočítaný sloupec založené na sloupec.,/div>
Ale zbavit se nejednoznačnosti, můžeme využít funkce FORMAT() takto:
declare @dt date='2019-June-08';select FORMAT(@dt, 'ddd') -- returns Sat
pro náš příklad bylo uvedeno výše, můžeme použít následující dotaz získat thedesired výsledek:
select EnrollDate, WeekDay=format(EnrollDate, 'ddd'), NewMembersfrom tempdb.dbo.NewAccount;
výsledek je:
Použití SQL Server FORMÁT, aby si Různé Číselné Formáty Zobrazení
Existuje mnoho požadavků na to, jak číselná data se zobrazí, jako je například thousandseparator každé 3 číslicemi, znakem procento, měna prefix nebo jiný formatwhen minus hodnota je zjištěna., V následující tabulce jsou uvedeny některé nejčastěji používanénumerní formáty hodnot.
praktické využití formátu je znázorněno v následujícím příkladu, tj. previouslywhen musím zkontrolovat řadě se počítá pro tabulky v databázi, zjistil jsem, že je velmi inconvenientto přijít na to, co velmi vysoké čísla jsou bez čárka, zvláště když máte stovky millionsof řádků nebo více. Následující kód uvádí řádky každé tabulky v databázi .
sloupec má čárku za každé 3 číslice, která dělá readingmuch jednodušší, než sloupec.,
použijte formát SQL Server pro zobrazení SQL Server Agent doba běhu úlohy
SQL Server historie úloh tabledbo.sysjobhistory má sloupec s názvem, jak je uvedeno níže:
Toto je celé číslo sloupec, kdy potřebuju generovat zprávu, já opravdu chci, aby toto být HH:MM:SS, například pokud run_duration je 1, chci, aby to bylo 00:00:01,další příklady jsou uvedeny v následující tabulce.,
Run_value | Očekává, že Formát Zobrazení |
---|---|
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 |
Tak jak můžeme dosáhnout?
trik je v tom, že budu používat nedokumentovanou, ale jednoduchou funkci v msdbdatabase, dbo.,agent_datetime, skládat datetime hodnotu zadáním fiktivní hodnotu,jako 20000101, @datum, parametr a použít sloupek pro @čas parametr,a potom pomocí FORMAT (), pro návrat do HH:MM:SS formátovaný výsledek.
pro ilustraci vytvořím tabulku a naplním ji somedatou simulující sloupec v dbo.sysjobhistory tabulka.
s následujícím kódem mohu převést hodnotu z hhmmssint na hodnotu HH:MM: SS string.,
výsledek je následující, přesně to, co chci:
Shrnutí
tento tip, máme revisited formát() funkce zavedené v SQL Server 2012 a uvedeny některé praktické příklady thatotherwise jsou obtížné realizovat. Tato funkce poskytuje pohodlí prodenní DBA report práce a při správném použití, funkce pomáhá, aby se kód stručné, snadno pochopitelné a jednoduché na údržbu.
nemluvil jsem o parametru kultury používaném ve funkci theformat ()., Tato kultura parametr může být velmi užitečné v některých culturerelated formát práce, jako je znak měny, všední jméno, datum (tj. rok/měsíc/dayor měsíc/den/rok, atd.). V některých společnostech s kancelářemi po celém světě můžeme postavitněkteré dotazy, které budou generovat výsledky kompatibilní s kulturou.
další kroky
můžete si přečíst několik dalších dobrých tipů MSSQLTips.com mluvíme o stejném tématu.
podělte se o své vlastní poznatky nebo kreativní využití této funkce.,
- Formát SQL Server Data ve FORMÁTU Funkce
- Nový FORMÁT a CONCAT Funkce v SQL Server 2012
- SQL Server funkce pro převod celé číslo, datum datum a čas formát
je Zde také velmi zajímavý článek o některé nedostatky oftheFORMAT() funkce.,
Poslední aktualizace: 2019-08-06
O autorovi
Zobrazit všechny moje tipy
- další tipy pro vývojáře databáze…