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 次 |
| 最近记录: |