Answers:
那里并没有真正的区别,但是当您开始使用DATETIME2
值或返回DATETIME2
值的函数时,会出现错误。
SELECT SYSDATETIME() - 1 AS [Incompatible]
消息206,级别16,状态2,第17行操作数类型冲突:datetime2与int不兼容
对于这些,您必须使用日期数学函数。
SELECT DATEADD(DAY, -1, SYSDATETIME()) AS [Compatible]
亚伦·伯特兰(Aaron Bertrand)在他的《踢烂习惯》系列中简要谈到了这个问题。
与其他答案之一相反,SQL Server 正式支持并记录了这两个选项:datetime - number
这不是未定义的行为。
的最大优势
DATEADD(d, -2, GETUTCDATE())
它是自我记录的事实:目的是显而易见的。
GETUTCDATE() - 2
另一方面,依赖于读者了解datetime - number
操作的定义。是的,它当前可能是惯用的T-SQL,但是不再受此支持的事实datetime2
意味着,下一代的SQL Server开发人员可能不再对此熟悉。
date
)。有点乱。