In realtà è molto coerente. DATETIME è un tipo ereditato dalle precedenti edizioni di sql server. Dall'edizione 2008, DATETIME2 è stata introdotta e la possibilità di aggiungere/sottrarre numeri interi è stata rimossa. Puoi ancora farlo su DATETIME come eredità.
DATE , come DATETIME2 esiste anche dal 2008 e per questo tipo è vietato aggiungere/sottrarre numeri.
Questo ti dà un errore:
DECLARE @Yesterday DATETIME2 = GETDATE();
SELECT @Yesterday-1;
Quindi va tutto bene :).