Ce devrait être, le cas échéant :
SELECT ...
CASE
WHEN ISDATE(ColumnName) = 1 THEN CONVERT(datetime, ColumnName, 103)
ELSE NULL
END
....
mais, vous n'utilisez pas ISDATE WITH CONVERT, car il n'y a pas d'expression comme
ISDATE(CONVERT(varchar,ColumnName,112))
sans la conversion imbriquée, la valeur de retour dépend de choses comme les paramètres de langue, d'où son comportement non déterministe. Sans connaissance "externe", il n'est pas possible de prédire le résultat que l'on obtient, en se basant uniquement sur l'entrée.