Effectivement, c'est très cohérent. DATETIME est un type hérité des éditions précédentes de sql server. Depuis l'édition 2008, DATETIME2 a été introduit, et la possibilité d'ajouter/soustraire des nombres entiers a été supprimée. Vous pouvez toujours le faire le DATETIME comme un héritage.
DATE , comme DATETIME2 existe également depuis 2008, et pour ce type, l'ajout/la soustraction de nombres est également interdit.
Cela vous donne une erreur :
DECLARE @Yesterday DATETIME2 = GETDATE();
SELECT @Yesterday-1;
Donc tout va bien :).