By: Jeffrey Yao | Updated: 2019-08-06 | Comments (3) | Related: More > Dates
Problem
od SQL Server 2012 mamy nową funkcję o nazwie format (), jest bardzo potężny w formatowaniu wartości DateTime i numerycznych, jakie są dobre zastosowania tej funkcji do wykorzystania w codziennej pracy dba?
rozwiązanie
funkcja SQL Server T-SQL FORMAT() jest w istocie funkcją systemową typu CLR i jako taka .,Do tej funkcji mają zastosowanie reguły formatowania sieci. Ta funkcja zwraca wartość nvarchar (lub wartość null).
w mojej codziennej pracy DBA, funkcja ta zapewnia wiele wygody, że innewiseneed niektóre paskudne konwersji T-SQL i manipulacji ciągiem pracy, aby uzyskać potrzebne formatsI.,th>Rejestracja
rysunek 1 – raport
Załóżmy , że moja tabela źródłowa i dane są następujące:
jeśli chcemy uzyskać Dane wyświetlane jak w, musimy obliczyć, która jest kolumną obliczoną na podstawie kolumny.,/div>
ale aby pozbyć się niejednoznaczności, możemy użyć funkcji FORMAT() w następujący sposób:
declare @dt date='2019-June-08';select FORMAT(@dt, 'ddd') -- returns Sat
Tak więc, w naszym przykładzie wspomnianym powyżej, możemy użyć następującego zapytania, aby uzyskać wynik działania:
select EnrollDate, WeekDay=format(EnrollDate, 'ddd'), NewMembersfrom tempdb.dbo.NewAccount;
wynik to:
użyj formatu SQL Server, aby uzyskać różne formaty wyświetlania liczb
istnieje wiele wymagań dotyczących sposobu wyświetlania danych liczbowych, takich jak tysięczny separator co 3 cyfry, znak procentowy, prefiks waluty lub inny format po napotkaniu wartości minus., W poniższej tabeli wymieniono niektóre najczęściej używaneformaty wartości liczbowych.
praktyczne użycie formatu jest pokazane w poniższym przykładzie, tzn. poprzednio, gdy muszę sprawdzić liczbę wierszy dla tabel w bazie danych, uważam, że jest to bardzo niewygodne, aby dowiedzieć się, jakie są bardzo wysokie liczby bez separatora przecinków, zwłaszcza gdy masz setki milionów wierszy lub więcej. Poniższy kod zawiera listę wierszy każdej tabeli w bazie danych .
kolumna ma przecinek na każde 3 cyfry, co sprawia, że odczyt jest łatwiejszy niż kolumna.,
Użyj formatu SQL Server do wyświetlania czasu wykonywania zadań SQL Server Agent
Historia zadań SQL Server tabledbo.sysjobhistory ma kolumnę o nazwie pokazanej poniżej:
jest to kolumna całkowita, kiedy muszę wygenerować raport, naprawdę chcę, aby był to format HH: MM: SS, na przykład jeśli run_duration ma wartość 1, chcę, aby był 00: 00: 01, więcej przykładów jest podanych w poniższej tabeli.,
Run_value | oczekiwany Format wyświetlania |
---|---|
12 | |
123 | 00:01:23 |
1234 | 00:12:34 |
12345 | 01:23:45 |
123456 | 12:34:56 |
251234 | 1D+01:12:34 |
więc jak możemy to osiągnąć?
sztuczka polega na tym, że użyję nie udokumentowanej, ale prostej funkcji w msdbdatabase, dbo.,agent_datetime, aby skomponować wartość datetime przez wprowadzenie wartości obojętnej ,takiej jak 20000101, dla parametru @ date i użyć kolumny dla parametru @ time, a następnie użyć metody FORMAT (), aby zwrócić wynik sformatowany HH:MM: SS.
aby zilustrować, stworzę tabelę i wypełnię ją somedata symulująca kolumnę w dbo.sysjobhistory table.
za pomocą poniższego kodu mogę przekonwertować wartość z hhmmssint na wartość łańcucha HH:MM:SS.,
wynik jest następujący, dokładnie to, czego chcę:
podsumowanie
w tej poradzie ponownie przyjrzeliśmy się funkcji format() wprowadzonej w SQL Server 2012 i wymieniliśmy kilka praktycznych przykładów, które są trudne do zaimplementowania. Funkcja zapewnia wygodę dla codziennej pracy raportu DBA, a gdy jest używana prawidłowo, pomaga uczynić kod zwięzłym, łatwym do zrozumienia i prostym w utrzymaniu.
nie dyskutowałem o parametrze culture używanym w funkcji format ()., Ten parametr kultury może być bardzo przydatny w niektórych pracach związanych z formatem kulturowym, takich jak znak waluty, nazwa dnia tygodnia, format daty (np. Rok/Miesiąc/Dzień lub Miesiąc/Dzień/Rok, itp.). W niektórych firmach z biurami na całym świecie możemy tworzyć własne zapytania, które będą generować wyniki zgodne z kulturą.
kolejne kroki
możesz przeczytać kilka innych dobrych porad na MSSQLTips.com mówiąc o tym samym temacie.
proszę o podzielenie się własnymi spostrzeżeniami lub twórczym wykorzystaniem tej funkcji.,
- formatowanie dat SQL Server z funkcją formatowania
- nowy format i funkcje CONCAT w SQL Server 2012
- funkcja SQL Server do konwersji daty całkowitej do formatu datetime
istnieje również bardzo ciekawy artykuł omawiający pewne niedociągnięcia funkcji format ().,
Ostatnia aktualizacja: 2019-08-06