gpt4 book ai didi

sql - 将 GETDATE() 与 SQL Server 中存储的 GETDATE() 进行比较的结果错误

转载 作者:行者123 更新时间:2023-12-02 15:44:00 26 4
gpt4 key购买 nike

我希望结果始终为 1:

DECLARE @x datetime2
SELECT @x=GETDATE()
SELECT CASE WHEN @x>GETDATE() THEN 0 ELSE 1 END

但有时是1,有时是0。这怎么可能?

最佳答案

代码执行需要时间。有时在第二行和第三行之间会出现一个勾号,有时(通常)不会。在后一种情况下(无勾选),@x仍然等于(不大于)GETDATE()第三行的值,最终得到 0 。最开始令我惊讶的是你见过1 。当蜱确实发生时,@x现在应该小于新的 GETDATE()第 3 行中的值,您仍然会看到 0

但是当您运行此代码时更有意义:

DECLARE @x datetime2
SELECT @x=GETDATE()
SELECT @x, GETDATE(), CASE WHEN @x>GETDATE() THEN 0 ELSE 1 END

现在我们可以更好地了解发生了什么。这是我的机器上的示例结果:

2018-01-19 23:32:21.3833333   |  2018-01-19 23:32:21.383   |    1

啊啊... @xdatetime2比旧版更精确datetimeGETDATE() 使用。您可以在 documentation for GETDATE() 中看到它确实返回 datetime而不是datetime2 。因此,两个值之间存在一些舍入误差。

对于0值,我运行更改后的代码 30 或 40 次(按 F5 刷新),以及 0全部我看到的是这样的:

2018-01-19 23:36:29.0366667   |   2018-01-19 23:36:29.037   |   0

第二列中的最后一位数字是 7,第一列有重复的 6,末尾有一个四舍五入的 7。

有一件事仍然让我困惑。 GETDATE()函数返回 datetime值,但不知何故它分配 datetime2精度为@x 。我希望看到总是与原始 GETDATE() 匹配的额外零结果。

关于sql - 将 GETDATE() 与 SQL Server 中存储的 GETDATE() 进行比较的结果错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48352894/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com