This should be, if at all:
SELECT ... CASE WHEN ISDATE(ColumnName) = 1 THEN CONVERT(datetime, ColumnName, 103) ELSE NULL END ....
but you are not using ISDATE WITH CONVERT since there is no expression like
ISDATE(CONVERT(varchar,ColumnName,112))
without a nested conversion, the return value depends on things such as language settings, therefore this is non-deterministic behavior. Without "external" knowledge, it is impossible to predict the result obtained on the basis of only one input.
source share