SQLShack (Français)

Classé dans : Articles | 0

Cet article explique l’utilisation de la fonction de format SQL et la comparaison des performances avec SQL CONVERT.

Introduction

Dans l’article SQL Convert Date functions and formats, nous avons discuté de l’utilisation de la fonction SQL CONVERT pour convertir la date et l’heure en plusieurs formats. Nous avons une nouvelle fonction, SQL FORMAT, de SQL Server 2012.

Nous utilisons cette nouvelle fonction pour obtenir une sortie dans un format et une culture spécifiés. Il renvoie un type de données NVARCHAR dans la sortie.,

Syntaxe de la fonction de FORMAT SQL

FORMAT (valeur, format)

Il a les paramètres suivants:

  • Valeur: C’est la valeur pour faire le formatage. Il devrait être à l’appui du format de type de données. Vous pouvez vous référer à la documentation Microsoft pour une liste des types de données pris en charge et leur type de données équivalent
  • Format: C’est le format requis dans lequel nous avons besoin de la sortie. Ce paramètre doit contenir une chaîne de format. NET valide dans le type de données NVARCHAR. Nous pouvons nous référer aux types de format dans.,NET pour plus de détails
  • Culture: C’est un paramètre optionnel. Par défaut, SQL Server utilise la langue de session en cours pour une culture par défaut. Nous pouvons fournir une culture spécifique ici, mais le framework.Net devrait le supporter., 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.,

Nous n’avons pas besoin de code de format dans la fonction de FORMAT SQL. Regardons divers exemples de la fonction de FORMAT:

Date de format SQL utilisant la culture

Dans la section précédente, nous n’avons pas utilisé l’argument culture. Comme vous le savez, c’est un argument facultatif, alors voyons quelle différence cela fait si nous le spécifions dans une requête.

Dans la requête ci-dessous, nous voyons le format de date utilisant l’argument d pour différentes cultures. Vous pouvez vous référer au tableau pour les codes de culture.,

De même, si nous changeons le format de d à f dans la requête ci-dessus, cela donne la sortie suivante:

SQL Format Currency using Culture

Nous pouvons également formater currency en utilisant cette fonction. Supposons que vous gérez un portail d’achat en ligne où les clients d’un autre pays viennent faire leurs achats. Vous souhaitez afficher les prix des produits dans leur monnaie., Dans la requête suivante, nous utilisons la fonction FORMAT pour afficher les prix avec un symbole monétaire:

Format des nombres en utilisant la fonction FORMAT

Échappant les deux-points et les points dans la fonction et il adhère également aux règles.NET CLR. Nous pouvons utiliser deux-points et point comme deuxième paramètre, et le premier paramètre devrait être une barre oblique inverse., Dans l’exemple suivant, voyons que la deuxième instruction format ignore les deux-points dans le temps spécifié:

Comparaison des performances du FORMAT SQL et de la fonction SQL CONVERT

Nous avons exploré les cas d’utilisation de la fonction FORMAT. Vous pourriez penser que nous devrions arrêter d’utiliser la fonction de conversion SQL et commencer à utiliser le FORMAT SQL. Attends! Faisons une comparaison du FORMAT SQL et de la CONVERSION 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 et sys.dm_exec_sql_text pour obtenir les données de comparaison des performances des instructions select que nous avons exécutées ci-dessus.

    Nous obtenons le résultat suivant de la DMV:

    Pour mieux comprendre, nous allons afficher ces données dans un graphique:

    Regarde le graphe de la requête 2, 3 et 4.,

    • Nous obtenons un temps écoulé élevé pour la requête qui utilise la fonction de FORMAT SQL
    • Les requêtes qui utilisent la fonction de CONVERSION ont de meilleures performances comparées à la fonction de FORMAT
    • Nous voyons également total_clr_time pour la requête avec la fonction de FORMAT alors qu’il est nul pour les requêtes de fonction de CONVERSION car la fonction de format utilise.Net CLR runtime

    Conclusion

    La fonction de FORMAT SQL est utile pour convertir les dates, l’heure, le nombre, la devise dans un format spécifié. Nous devrions l’utiliser lorsque nous n’exigeons que des modifications adaptées aux paramètres régionaux, car cela pourrait entraîner des problèmes de performances., Nous devrions utiliser la fonction SQL CONVERT pour tous les autres cas. Si vous prévoyez de l’utiliser en production, je vous recommande de faire un test de performance approfondi pour votre charge de travail.,

    • Auteur
    • Messages récents
    En tant que formateur certifié MCSA et Microsoft à Gurgaon, en Inde, avec 13 ans d’expérience, Rajendra travaille pour une variété de grandes entreprises en se concentrant sur l’optimisation des performances, la surveillance, la haute disponibilité et les stratégies de reprise après sinistre et la mise en œuvre., Il est l’auteur de centaines d’articles faisant autorité sur SQL Server, Azure, MySQL, Linux, Power BI, Performance tuning, AWS/Amazon RDS, Git et les technologies connexes qui ont été consultés par plus de 10 millions de lecteurs à ce jour.
    Il est le créateur de l’une des plus grandes collections en ligne gratuites d’articles sur un seul sujet, avec sa série de 50 parties sur SQL Server Toujours sur les groupes de disponibilité. Sur la base de sa contribution à la communauté SQL Server, il a été reconnu par divers prix, y compris le prestigieux « Meilleur auteur de l’année » en continu en 2020 et 2021 à SQLShack.,
    Raj est toujours intéressé par les nouveaux défis, donc si vous avez besoin d’aide de consultation sur un sujet couvert dans ses écrits, il peut être joint à rajendra.gupta16 @ gmail.,com
    Voir tous les messages de Rajendra Gupta

    Derniers messages de Rajendra Gupta (voir tout)
    • Délais d’attente de session dans SQL Server Toujours sur les groupes de disponibilité – 8 février 2021
    • Exécution mineure et mises à niveau de version majeures pour AWS RDS SQL Server – 29 janvier 2021
    • Déploiement d’instances AWS RDS PostgreSQL – 27 janvier 2021

    Laisser un commentaire

    Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *