Właściwie jest bardzo spójny. DATETIME
to typ odziedziczony z poprzednich edycji serwera sql. Od edycji 2008, DATETIME2
wprowadzono i usunięto możliwość dodawania/odejmowania liczb całkowitych. Nadal możesz to zrobić w DATETIME
jako dziedzictwo.
DATE
, np. DATETIME2
istnieje również od 2008 roku i dla tego typu dodawanie/odejmowanie liczb jest również zabronione.
To daje błąd:
DECLARE @Yesterday DATETIME2 = GETDATE();
SELECT @Yesterday-1;
Więc wszystko jest w porządku :).