Je to proto, že prázdný řetězec ''
není NULL
. Pokud tak učiníte:
select Cast(null AS datetime)
VÝSTUP:
-----------------------
NULL
(1 row(s) affected)
CAST a CONVERT (Transact-SQL)
Když se znaková data, která představují pouze datum nebo pouze časové složky, přenášejí do datetime nebo smalldatetime datové typy, nespecifikovaná časová složka je nastavena na 00:00:00.000 a nespecifikovaná složka data je nastavena na 1900-01-01.