Това е защото е празен низ ''
не е NULL
. Ако го направите:
select Cast(null AS datetime)
ИЗХОД:
-----------------------
NULL
(1 row(s) affected)
CAST и CONVERT (Transact-SQL)
Когато символни данни, които представляват само компоненти за дата или само време, се прехвърлят към datetime или smalldatetime типове данни, неуточненият компонент за време е зададен на 00:00:00.000, а неуказаният компонент за дата е настроен на 1900-01-01.