gpt4 book ai didi

SQL Server 2008 BETWEEN 函数

转载 作者:行者123 更新时间:2023-12-04 17:33:20 25 4
gpt4 key购买 nike

这是我的代码:

DECLARE @d1 DATETIME
DECLARE @d2 DATETIME

SET @d1 = '2015-01-01 00:00:00'
SET @d2 = '2015-12-31 23:59:59.999'

SELECT
CASE
WHEN ('2016-01-01 00:00:00' BETWEEN @d1 AND @d2)
THEN 'is between'
ELSE 'not between'
END AS BetweenOrNotBetween

我在这里提供的日期比 BETWEEN 的范围晚 1 毫秒函数,但在我的 SQL 2008 服务器实例上,结果是 '介于'而不是预期的 '不在之间' ...

这是一个错误,还是由于某种我没有看到的原因而在设计中做出必要的妥协?

是的,只要我在 2016-01-01 午夜之后加上几分之一秒,我就会得到预期的 '不在之间'结果。

最佳答案

查看 datetime type 的文档.在 Rounding of datetime Fractional Second Precision 部分你会找到你的问题的解释:

datetime values are rounded to increments of .000, .003, or .007 seconds, as shown in the following table.



这意味着如果你有 1 毫秒,它实际上四舍五入到 0 毫秒,所以你的结果是 is between .不幸的是,这就是 datetime数据类型有效,对此您无能为力,除非您可以使用其他数据类型,例如 datetime2 .

关于SQL Server 2008 BETWEEN 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34796978/

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