Quels sont les conseils généraux sur le moment où vous devez utiliser CAST
versus CONVERT
? Existe-t-il des problèmes de performances liés au choix de l'un par rapport à l'autre? Est-on plus proche d'ANSI-SQL?
la source
Quels sont les conseils généraux sur le moment où vous devez utiliser CAST
versus CONVERT
? Existe-t-il des problèmes de performances liés au choix de l'un par rapport à l'autre? Est-on plus proche d'ANSI-SQL?
CONVERT
est spécifique à SQL Server, CAST
est ANSI.
CONVERT
est plus flexible dans la mesure où vous pouvez formater des dates, etc. À part cela, elles sont à peu près les mêmes. Si vous ne vous souciez pas des fonctionnalités étendues, utilisez CAST
.
ÉDITER:
Comme indiqué par @beruic et @CF dans les commentaires ci-dessous, il y a une perte de précision possible lorsqu'une conversion implicite est utilisée (c'est-à-dire que vous n'utilisez ni CAST ni CONVERT). Pour plus d'informations, consultez CAST et CONVERT et en particulier ce graphique: Tableau de conversion des types de données SQL Server . Avec ces informations supplémentaires, les conseils originaux restent les mêmes. Utilisez CAST si possible.
Convert a un paramètre de style pour les conversions de date en chaîne.
http://msdn.microsoft.com/en-us/library/ms187928.aspx
la source
CAST est du SQL standard, mais CONVERT ne concerne que le dialecte T-SQL. Nous avons un petit avantage pour convertir dans le cas de datetime.
Avec CAST, vous indiquez l'expression et le type cible; avec CONVERT, il y a un troisième argument représentant le style de la conversion, qui est pris en charge pour certaines conversions, comme entre les chaînes de caractères et les valeurs de date et d'heure. Par exemple, CONVERT (DATE, '1/2/2012', 101) convertit la chaîne de caractères littérale en DATE en utilisant le style 101 représentant la norme des États-Unis.
la source
Pour développer la réponse ci-dessus copiée par Shakti , j'ai en fait pu mesurer une différence de performance entre les deux fonctions.
Je testais les performances des variantes de la solution pour cette question et constaté que l'écart type et les durées d'exécution maximales étaient plus importants lors de l'utilisation
CAST
.* Temps en millisecondes, arrondis au 1 / 300e de seconde près selon la précision du
DateTime
typela source
Quelque chose que personne ne semble avoir encore noté est la lisibilité. Ayant…
… Peut être plus facile à comprendre que…
la source
CAST(Column1 AS int)
est plus logique à lire queCONVERT(int, Column1)
même pour les expressions longuesCAST utilise la norme ANSI. En cas de portabilité, cela fonctionnera sur d'autres plateformes. CONVERT est spécifique au serveur SQL. Mais c'est une fonction très forte. Vous pouvez spécifier différents styles pour les dates
la source