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 :).