Antworten:
Es gibt dort keinen wirklichen Unterschied, aber wenn Sie anfangen, DATETIME2
Werte oder Funktionen zu verwenden, die DATETIME2
Werte zurückgeben, werden Fehler angezeigt.
SELECT SYSDATETIME() - 1 AS [Incompatible]
Meldung 206, Ebene 16, Status 2, Zeile 17 Kollision vom Operandentyp: datetime2 ist nicht mit int kompatibel
Für diese müssen Sie Datumsberechnungsfunktionen verwenden.
SELECT DATEADD(DAY, -1, SYSDATETIME()) AS [Compatible]
Aaron Bertrand spricht in seiner Serie Bad Habits to Kick kurz über dieses Problem .
Im Gegensatz zu den Behauptungen in einer der anderen Antworten werden beide Optionen von SQL Server offiziell unterstützt und dokumentiert : datetime - number
Es handelt sich nicht um undefiniertes Verhalten.
Der große Vorteil von
DATEADD(d, -2, GETUTCDATE())
ist die Tatsache, dass es sich selbst dokumentiert : Sein Zweck ist sofort offensichtlich.
GETUTCDATE() - 2
Auf der anderen Seite muss der Leser die Definition der datetime - number
Operation kennen. Ja, es könnte derzeit idiomatisches T-SQL sein, aber die Tatsache, dass dies nicht mehr unterstützt wird, datetime2
impliziert, dass zukünftige Generationen von SQL Server-Entwicklern möglicherweise nicht mehr damit vertraut sind.
date
hinzugefügten (?) Version existierten ). Es ist ein bisschen chaotisch.