Na verdade, é muito consistente.
DATETIME
é um tipo herdado de edições anteriores do sql server. Desde a edição de 2008, DATETIME2
foi introduzido, e a possibilidade de adicionar/subtrair inteiros removida. Você ainda pode fazer isso em DATETIME
como um legado. DATE
, como DATETIME2
já existia desde 2008, também, e para este tipo de adição/subtração de números também é proibido. Isso lhe dá um erro:
DECLARE @Yesterday DATETIME2 = GETDATE();
SELECT @Yesterday-1;
Então está tudo bem :).