Du kan ikke blande datatyper i CASE-udtryk (eller i det mindste uden at passe på, at de implicit vil kaste OK)
Når de konfronteres med et sætningselement som det følgende, vil SQL Server bruge datatypeprioritet til at bestemme, hvad den overordnede datatype for udtrykket skal være
SELECT CASE WHEN 1=1 THEN 'not-a-date' ELSE getdate() END
For ovenstående datetime har højere forrang end char så den caster implicit strengen til en dato, der mislykkes.
Det følgende lykkes dog som sql_variant har en højere prioritet
SELECT CASE WHEN 1=1 THEN cast('not-a-date' as sql_variant) ELSE getdate() END
Så du kan returnere flere blandede datatyper på den måde (jeg er ikke sikker på, hvor let sql_variant er dog at arbejde med)
Andet end det kan du returnere NULL for ugyldige dato og klokkeslæt i stedet for at returnere nonsensdata eller cast alt til en streng, hvis du skal returnere det.