Respuestas:
No hay una diferencia real allí, pero cuando comienzas a usar DATETIME2
valores o funciones que devuelven DATETIME2
valores, obtendrás errores.
SELECT SYSDATETIME() - 1 AS [Incompatible]
Mensaje 206, Nivel 16, Estado 2, Línea 17 Tipo de operando choque: datetime2 es incompatible con int
Para esto, debe usar las funciones matemáticas de fecha.
SELECT DATEADD(DAY, -1, SYSDATETIME()) AS [Compatible]
Aaron Bertrand habla sobre este tema brevemente en su serie Bad Habits to Kick .
Contrario a las afirmaciones en una de las otras respuestas, ambas opciones son soportadas oficialmente y documentados por SQL Server: datetime - number
es no un comportamiento indefinido.
La gran ventaja de
DATEADD(d, -2, GETUTCDATE())
es el hecho de que se documenta por sí mismo : su propósito es inmediatamente obvio.
GETUTCDATE() - 2
, por otro lado, confía en que el lector conozca la definición de la datetime - number
operación. Sí, actualmente puede ser T-SQL idiomático, pero el hecho de que esto ya no sea compatible datetime2
implica que las generaciones futuras de desarrolladores de SQL Server ya no estén familiarizados con él.
date
se agregó). Es un poco desordenado