Ten artykuł wyjaśnia użycie funkcji formatu sql i porównanie wydajności z SQL CONVERT.
wprowadzenie
w artykule SQL Convert Date functions and formats omówiliśmy wykorzystanie funkcji SQL CONVERT do konwersji daty i czasu na wiele formatów. Mamy nową funkcję, FORMAT SQL, od SQL Server 2012.
używamy tej nowej funkcji, aby uzyskać wyjście w określonym formacie i kulturze. Zwraca typ danych nvarchar na wyjściu.,
składnia funkcji SQL FORMAT
FORMAT (wartość, format)
posiada następujące parametry:
- wartość: jest to wartość do formatowania. Powinien być obsługiwany przez format typu danych. Listę obsługiwanych typów danych i ich odpowiedników w formacie
- można znaleźć w dokumentacji firmy Microsoft: jest to wymagany format, w którym wymagane jest wyjście. Parametr ten powinien zawierać prawidłowy łańcuch formatu. NET w typie danych NVARCHAR. Możemy odnosić się do typów formatów w .,NET więcej szczegółów
- kultura: jest to parametr opcjonalny. Domyślnie SQL Server używa języka bieżącej sesji dla domyślnej Kultury. Możemy tu zapewnić konkretną kulturę, ale Framework. Net powinien ją wspierać., We get an error message in case of invalid Culture
We use the following SQL CONVERT function to get output in format:
1
|
SELECT CONVERT(VARCHAR(10), GETDATE(), 101) AS
|
As we know, we require format code in SQL Convert function for converting output in a specific format.,
nie wymagamy formatowania kodu w funkcji FORMAT SQL. Spójrzmy na różne przykłady funkcji formatowania:
Data formatu SQL przy użyciu Kultury
w poprzedniej sekcji nie użyliśmy argumentu culture. Jak wiesz, jest to argument opcjonalny, więc zobaczmy, jaka to różnica, jeśli podamy go w zapytaniu.
w poniższym zapytaniu widzimy format daty za pomocą argumentu d dla różnych kultur. Możesz zapoznać się z tabelą kodów Kultury.,
Podobnie, jeśli zmienimy format z d na f w powyższym zapytaniu, daje to następujące wyjście:
Waluta formatu SQL za pomocą Kultury
możemy również formatować walutę za pomocą tej funkcji. Załóżmy, że zarządzasz portalem zakupów online, w którym klienci z innego kraju przychodzą na zakupy. Chcesz wyświetlić ceny produktów w ich walucie., W poniższym zapytaniu używamy funkcji formatowania do wyświetlania cen z symbolem waluty:
Formatowanie liczb za pomocą funkcji formatowania
unikanie dwukropków i okresów w funkcji formatu SQL
powinniśmy unikać dwukropków i okresów w tej funkcji, jest również zgodny z zasadami CLR.NET. Możemy użyć dwukropków i kropki jako drugiego parametru, a pierwszym parametrem powinien być odwrotny ukośnik., W poniższym przykładzie widzimy, że druga Instrukcja format pomija dwukropek w określonym czasie:
porównanie wydajności formatu SQL i funkcji konwersji SQL
zbadaliśmy przypadki użycia funkcji FORMAT. Możesz pomyśleć, że powinniśmy przestać używać funkcji konwersji SQL i zacząć używać formatu SQL. Czekaj! Zróbmy porównanie zarówno formatu SQL, jak i konwersji SQL.,v>
Query4: Select all records from TestPerfomance order by ID column and use FORMAT function for the InputTime column:
1
2
3
4
|
SELECT FORMAT(InputTime, 'yyyy-MM-dd')
FROM TestPerformance
ORDER BY id;
GO 10
|
We can use DMV sys.,dm_exec_query_stats i sys. dm_exec_sql_text, aby uzyskać dane porównania wydajności instrukcji select, które wykonaliśmy powyżej.
otrzymujemy następujące wyjście z DMV:
aby lepiej to zrozumieć, przejrzyjmy te dane na wykresie:
spójrz na wykres dla zapytania 2, 3 i 4.,
- otrzymujemy wysoki czas dla zapytania używającego funkcji formatu SQL
- zapytania używające funkcji konwersji mają lepszą wydajność w porównaniu do funkcji formatu
- widzimy również total_clr_time dla zapytania z funkcją formatu, podczas gdy jest zero dla zapytań konwersji funkcji, ponieważ funkcja formatu używa środowiska uruchomieniowego.Net CLR
wnioski
funkcja formatu SQL jest przydatna do konwersji dat, czasu, liczby, waluty w określonym formacie.. Powinniśmy go używać, gdy wymagamy zmian opartych na ustawieniach lokalnych, ponieważ może to powodować problemy z wydajnością., We wszystkich innych przypadkach powinniśmy używać funkcji SQL CONVERT. Jeśli planujesz użyć go w produkcji, polecam przeprowadzenie dokładnych testów wydajności dla Twojego obciążenia pracą.,
- Autor
- Ostatnie posty
jest twórcą jednego z największych darmowych internetowych zbiorów artykułów na jeden temat, z jego 50-częściową serią na SQL Server Always On Availability Groups. W oparciu o swój wkład w społeczność SQL Server został wyróżniony różnymi nagrodami, w tym prestiżowym „najlepszym autorem roku” nieprzerwanie w 2020 i 2021 w sqlshack.,
Raj jest zawsze zainteresowany nowymi wyzwaniami, więc jeśli potrzebujesz pomocy Konsultacyjnej na dowolny temat poruszany w jego pismach, można do niego dotrzeć w rajendra.gupta16@gmail.,com
Zobacz wszystkie posty Rajendra Gupta
- session timeouts in SQL Server Always On Availability Groups – 8 lutego 2021
- Performing mniejsze i większe aktualizacje wersji dla AWS RDS SQL Server – 29 stycznia 2021
- wdrażanie instancji AWS RDS PostgreSQL – 27 stycznia 2021
Dodaj komentarz