有什么原因为什么我应该每次都停止使用SYSDATETIME()而不是GETDATE()?

他们不是都问CPU几点了吗,或者sysdatetime是否需要更多指令来计算分数? Getdate是否可以四舍五入? sysdatetime是否可以因为无法进行舍入而更快?

如果我不存储纳秒级的数据,我显然不会使用sysdatetime,但是我要问的是除存储大小之外的其他成本。 (我正在开发的当前应用程序每秒至少运行sysdatetime()280次)

最佳答案

SELECT SYSDATETIME();
GO
DECLARE @d DATETIME2(7) = SYSDATETIME();
GO 10000
SELECT SYSDATETIME();
GO
DECLARE @d DATETIME = SYSDATETIME();
GO 10000
SELECT SYSDATETIME();
GO
DECLARE @d DATETIME2(7) = GETDATE();
GO 10000
SELECT SYSDATETIME();
GO
DECLARE @d DATETIME = GETDATE();
GO 10000
SELECT SYSDATETIME();

结果:
  • 将SYSDATETIME分配给DATETIME2(7):3.4 s
  • 将SYSDATETIME分配给DATETIME:3.3 s
  • 将GETDATE分配给DATETIME2(7):3.4 s
  • 将GETDATE分配给DATETIME:3.3 s

  • 因此,这似乎无关紧要。重要的是您将变量分配给哪种类型,即使那也不是很多。 10000/0.1秒表示增量非常小,不足以担心。在这种情况下,我宁愿保持一致。

    关于sql - SYSDATETIME()的成本是否比GETDATE()的高?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14856438/

    10-11 05:19