Het is omdat de lege tekenreeks ''
is niet NULL
. Als je dat doet:
select Cast(null AS datetime)
UITGANG:
-----------------------
NULL
(1 row(s) affected)
CAST en CONVERT (Transact-SQL)
Wanneer tekengegevens die alleen datum- of alleen tijdcomponenten vertegenwoordigen, worden gecast naar de datetime of smalldatetime datatypes, de niet-gespecificeerde tijdcomponent is ingesteld op 00:00:00.000 en de niet-gespecificeerde datumcomponent is ingesteld op 1900-01-01.