Risposte:
Non c'è alcuna vera differenza lì, ma quando inizi a utilizzare DATETIME2
valori o funzioni che restituiscono DATETIME2
valori, otterrai errori.
SELECT SYSDATETIME() - 1 AS [Incompatible]
Messaggio 206, livello 16, stato 2, riga 17 Tipo di operando scontro: datetime2 non è compatibile con int
Per questi, devi usare le funzioni matematiche della data.
SELECT DATEADD(DAY, -1, SYSDATETIME()) AS [Compatible]
Aaron Bertrand parla brevemente di questo problema nella sua serie Bad Habits to Kick .
Contrariamente a quanto affermato in una delle altre risposte, entrambe le opzioni sono ufficialmente supportati e documentati da SQL Server: datetime - number
è non è un comportamento indefinito.
Il grande vantaggio di
DATEADD(d, -2, GETUTCDATE())
è il fatto che è auto-documentante : il suo scopo è immediatamente ovvio.
GETUTCDATE() - 2
d'altra parte, si affida al lettore che conosce la definizione datetime - number
dell'operazione. Sì, al momento potrebbe essere T-SQL idiomatico, ma il fatto che questo non sia più supportato datetime2
implica che le generazioni future di sviluppatori di SQL Server potrebbero non conoscerlo più.
date
stata aggiunta). È un po 'disordinato.