gpt4 book ai didi

SQL 服务器 : Get record with date closest to given date

转载 作者:行者123 更新时间:2023-12-02 20:13:48 26 4
gpt4 key购买 nike

我有一张 table dbo.studiesdatetime column studydate

我想使用 datetime 查询数据库变量 givendate找到最接近 datetime 的记录在 column studydate

使用:

SELECT TOP 1 *
FROM studies
WHERE studies.studydate < givendate
ORDER BY studies.studydate DESC

将生成较少且最接近 givendate 的记录, 但我需要记录最接近 givendate , 不管是少还是多然后 studydate

关于如何找到它的任何想法?

最佳答案

一种方法是:

SELECT TOP 1 s.*
FROM studies s
ORDER BY ABS(DATEDIFF(day, s.studydate, @givendate));

这使用 DATEDIFF() 来获取最近的日期。请注意,这是使用 day 作为区别。如果您的“日期”有时间部分,您可能需要不同的日期部分。

请注意,这不会利用索引。一个更快的方法(如果你有索引)有点复杂:

SELECT TOP (1) s.*
FROM ((SELECT TOP 1 s.*
FROM studies s
WHERE s.studydate <= @givendate
ORDER BY s.studydate DESC
) UNION ALL
(SELECT TOP 1 s.*
FROM studies s
WHERE s.studydate > @givendate
ORDER BY s.studydate ASC
)
) s
ORDER BY DATEDIFF(day, s.studydate, @givendate));

虽然这更复杂,但每个子查询都可以使用 studydate 上的索引。最后的排序将只有两行,所以它应该非常快。

关于SQL 服务器 : Get record with date closest to given date,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52854028/

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