new*_*bie 13 sql-server t-sql sql-server-2014
我想知道以下两种方法之间的区别是什么:
GETUTCDATE()-2
Run Code Online (Sandbox Code Playgroud)
和
DATEADD(d,-2,GETUTCDATE())
Run Code Online (Sandbox Code Playgroud)
我想使用DATEADD
是正确的方法,但想知道为什么?
Eri*_*ing 14
那里没有真正的区别,但是当您开始使用DATETIME2
值或返回DATETIME2
值的函数时,您会遇到错误。
SELECT SYSDATETIME() - 1 AS [Incompatible]
Run Code Online (Sandbox Code Playgroud)
消息 206,级别 16,状态 2,第 17 行操作数类型冲突:datetime2 与 int 不兼容
对于这些,您必须使用日期数学函数。
SELECT DATEADD(DAY, -1, SYSDATETIME()) AS [Compatible]
Run Code Online (Sandbox Code Playgroud)
Aaron Bertrand 在他的Bad Habits to Kick系列中简要谈到了这个问题。
与其他答案之一中的声明相反,SQL Server正式支持和记录这两个选项:datetime - number
这不是未定义的行为。
的大优势
DATEADD(d, -2, GETUTCDATE())
Run Code Online (Sandbox Code Playgroud)
事实是它是自我记录的:它的目的是显而易见的。
GETUTCDATE() - 2
,另一方面,依赖于读者了解datetime - number
操作的定义。是的,它目前可能是惯用的 T-SQL,但不再支持它的事实datetime2
意味着未来几代 SQL Server 开发人员可能不再熟悉它。
归档时间: |
|
查看次数: |
2452 次 |
最近记录: |