Ответы:
Там нет никакой разницы, но когда вы начнете использовать DATETIME2
значения или функции, которые возвращают DATETIME2
значения, вы получите ошибки.
SELECT SYSDATETIME() - 1 AS [Incompatible]
Сообщение 206, уровень 16, состояние 2, строка 17 Столкновение с типом операнда: datetime2 несовместимо с int
Для этого вы должны использовать математические функции даты.
SELECT DATEADD(DAY, -1, SYSDATETIME()) AS [Compatible]
Аарон Бертран вкратце рассказывает об этой проблеме в своей серии « Плохие привычки и удар ».
Вопреки утверждениям в одном из других ответов, оба варианта официально поддерживаются и документируются SQL Server: datetime - number
это не неопределенное поведение.
Большое преимущество
DATEADD(d, -2, GETUTCDATE())
является фактом, что это самодокументирование : его цель немедленно очевидна.
GETUTCDATE() - 2
с другой стороны, полагается, что читатель знает определение datetime - number
операции. Да, в настоящее время это может быть идиоматический T-SQL, но тот факт, что он больше не поддерживается, datetime2
подразумевает, что будущие поколения разработчиков SQL Server могут больше не знакомы с ним.
date
была добавлена). Это немного грязно.