gpt4 book ai didi

mysql - 如何使用 SQL 创建以 "select"开头且不使用默认表的日期序列?

转载 作者:行者123 更新时间:2023-11-29 23:01:52 25 4
gpt4 key购买 nike

因此,我尝试在 SQL 中创建日期序列,但该脚本有一些限制:1. 必须以“select”开头。2.不能使用递归。3. 不能使用默认的Table。

原因是它不会在 MSSQL 中运行,而是在 BI 工具中运行,该工具具有类似 SQL 的语法,但受到更多限制。

我已经找到了这些解决方案:

WITH CTE_DatesTable
AS
(
SELECT CAST('2013-05-20' as datetime) AS [date]
UNION ALL
SELECT DATEADD(dd, 1, [date])
FROM CTE_DatesTable
WHERE DATEADD(dd, 1, [date]) <= '2016-10-18'
)
SELECT date FROM CTE_DatesTable
OPTION (MAXRECURSION 0);

还有这个:

select  dateadd(day, number, '2014-1-1')
from
(select distinct number from master.dbo.spt_values
where name is null
) n
where dateadd(day, number, '2014-1-1') < '2017-1-1'

但是两者都违反了限制,所以我无法使用它们。我考虑过使用第二个并创建一个包含“number”和“name”列的表,就像“master.dbo.spt_values”中一样,但该脚本必须具有相同的限制,所以我几乎回到原来的问题。

最佳答案

您可以尝试生成一个包含日期列表的表,然后使用如下循环逻辑从该表中选择所有值。

声明@date = 'yyyy-mm-dd'日期

创建表#temp(date_seq日期)

当@date <='yyyy-mm-dd'

插入#temp值(@date)

@date = DATE_ADD(dd, 1, @date)

结束

从#temp中选择*

关于mysql - 如何使用 SQL 创建以 "select"开头且不使用默认表的日期序列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28449691/

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