The two functions (CAST and CONVERT) have the same purpose, so they do the same thing, which is the conversion of the data type of an expression. There is not much difference between the two functions, as previously stated, the CAST function is ISO standard and CONVERT is T-SQL. The most relevant difference I see between the two functions is that, in the CONVERT function, for the conversion of DATETIME data types, there is a third parameter to "choose" the desired date/time pattern, as shown on the Microsoft website, that the CAST function does not support. In my view this is an interesting feature, especially when we deal with instructions between different systems and databases, where each stores the date in a different format. This way, using the CONVERT function of SQL Server, you can take more advantage. Now, in terms of performance, there is no relevant difference to use one rather than another.
https://docs.microsoft.com/pt-br/sql/t-sql/functions/cast-and-convert-transact-sql?view=sql-server-2017
@Henry will be the same?
– Marconi
Useful link
– Don't Panic
Possible duplicate of Difference between CAST and CONVERT in Mysql
– Ivan Ferrer
Marconi and @Ivanferrer The ends are the same. I believe that the means are different and, even if everything is the same, I think it is important that you keep the question, Marconi. Even if it is closed. Then, when someone goes looking for this about SQL Server will fall here and will see that the answer lies in the other question.
– Jéf Bueno
@Marconi: CONVERT has more options than CAST. // Care should be taken when using the CAST function, because in some cases it uses session settings to decide how the conversion will be. In the CONVERT function the conversion rule is defined.
– José Diz