Всъщност е много последователен. DATETIME е тип, наследен от предишни издания на sql сървър. От изданието от 2008 г., DATETIME2 е въведена и е премахната възможността за добавяне/изваждане на цели числа. Все още можете да го направите на DATETIME като наследство.
DATE , като DATETIME2 също съществува от 2008 г. и за този тип добавянето/изваждането на числа също е забранено.
Това ви дава грешка:
DECLARE @Yesterday DATETIME2 = GETDATE();
SELECT @Yesterday-1;
Така че всичко е наред :).