我不确定我在这里缺少什么,但是当我在SQL Server 2008 SSMS会话中执行类似的操作时:
declare @start datetime
declare @end datetime
set @start = GetDate()
Update blah blah...a huge amount of rows...;
set @end = GetDate()
当我尝试datediff
和@start
之间的@end
秒时,我得到零。
所以我打印了@start
和@end
,它们是相同的。该查询花了几分钟。这是怎么回事?
谢谢, 吉姆
答案 0 :(得分:0)
您可以发现四个特定用例,Datetime2和SYSDATETIME()将为您提供更高的精度。然后,您可以使用nanoseconds datediff运算符。
顺便说一句,你应该假设在更新过程中UPDATE myDate = GETDATE()WHERE“大量记录”和UPDATE myDatefield = SYSDATETIME()总是会给你不同的日期值,取决于你的月亮的阶段和芝加哥熊队最后一场比赛的得分。
这是因为GETDATE()在SQL服务器的两个不同级别上不具有确定性。