T-SQL Cast contre Convert

Quelle est la directive générale sur quand vous devriez utiliser CAST versus CONVERT ? Y a-t-il des problèmes de performance liés au choix de l'un par rapport à l'autre? Est-on plus proche de ANSI-SQL?

    CONVERT est spécifique à SQL Server, CAST est ANSI.

    CONVERT est plus flexible en ce sens que vous pouvez mettre en forme des dates, etc. A part ça, ils sont à peu près les mêmes. Si vous ne vous souciez pas des fonctionnalités étendues, utilisez CAST .

    MODIFIER:

    Comme noté 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 une utilisation où vous n'utilisez ni CAST ni CONVERT). Pour plus d'informations, voir CAST et CONVERT et en particulier ce graphique: Tableau de conversion des types de données SQL Server . Avec cette information supplémentaire, le conseil original rest toujours le même. Utilisez CAST si possible.

    Convert a un paramètre de style pour la date pour les conversions de string.

    http://msdn.microsoft.com/en-us/library/ms187928.aspx

    CAST est standar SQL, mais CONVERT n'est pas (seulement pour 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 de cible; avec CONVERT, il existe un troisième argument représentant le style de la conversion, qui est pris en charge pour certaines conversions, comme entre les strings de caractères et les valeurs de date et d'heure. Par exemple, CONVERT (DATE, '1/2/2012', 101) convertit la string de caractères littérale en DATE en utilisant le style 101 représentant la norme des États-Unis.

    Cordialement,

    CAST utilise la norme ANSI. En cas de portabilité, cela fonctionnera sur d'autres plateforms. CONVERT est spécifique au server sql. Mais est une fonction très forte. Vous pouvez spécifier différents styles pour les dates