gpt4 book ai didi

sql - 如何选择两个日期之间的所有时间?

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

declare @minDateTime as datetime;
declare @maxDateTime as datetime;

set @minDateTime = '2014-01-13 02:00:00';
set @maxDateTime = '2014-12-31 14:00:00';

我希望创建一个 select 语句,该语句将在 @minDateTime 和 @maxDateTime 之间每小时返回一次,如下所示(没有可供选择的表。我不是在寻找 where 子句!):

2014-01-13 02:00:00
2014-01-13 03:00:00
2014-01-13 04:00:00
...
2014-12-31 12:00:00
2014-12-31 13:00:00
2014-12-31 14:00:00

最佳答案

试试这个。使用Recursive CTE .

DECLARE @minDateTime AS DATETIME;
DECLARE @maxDateTime AS DATETIME;

SET @minDateTime = '2014-01-13 02:00:00';
SET @maxDateTime = '2014-12-31 14:00:00';

;
WITH Dates_CTE
AS (SELECT @minDateTime AS Dates
UNION ALL
SELECT Dateadd(hh, 1, Dates)
FROM Dates_CTE
WHERE Dates < @maxDateTime)
SELECT *
FROM Dates_CTE
OPTION (MAXRECURSION 0)

在上面的查询中Dates_CTECommon Expression Table ,基本记录为CTEUNION ALL之前的第一个sql查询得出。查询结果为您提供 Minimum date .

UNION ALL之后的第二个查询重复执行即可得到结果。这个过程是recursive 并将持续到日期小于 @maxDateTime .

关于sql - 如何选择两个日期之间的所有时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27161474/

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