gpt4 book ai didi

最近 12 个月的 SQL 函数

转载 作者:行者123 更新时间:2023-12-02 15:34:27 25 4
gpt4 key购买 nike

我正在寻找一个 SQL 函数,它提供过去 12 个月的开始日期和结束日期。假设您选择 10.Dec,它会给出以下结果:

 - StartDate   --   EndDate 
- 2013-11-01 - 2013-11-30
- 2013-10-01 - 2013-10-31
- 2013-09-01 - 2013-09-30

过去 12 个月也是如此。

我尝试修改我们拥有的一个旧函数,但最后我完全离开并感到困惑。

ALTER FUNCTION [dbo].[Last12Months](@Date date) RETURNS TABLE 
AS
Return
(
with cte as (
SELECT DATEADD(mm, DATEDIFF(mm, 01, @Date), 01) AS Start,
DATEADD(mm, DATEDIFF(mm, -12, @Date), -12) AS EndDate
union all
select Start - 1, EndDate - 1 from cte
where Start >= @Date )
select CAST(Start as DATE) StartDate, CAST(EndDate as DATE) EndDate from cte)

像这样运行它:

select * from dbo.Last12Months ('2013-12-10')

得到:

 - StartDate   -  EndDate 
- 2013-12-02 - 2013-12-20

有人知道怎么办吗?

最佳答案

请尝试使用 CTE:

ALTER FUNCTION [dbo].[Last12Months]
(
@Date datetime
) RETURNS @tbl TABLE (Start datetime, EndDate datetime)
AS
BEGIN
WITH T AS(
SELECT
DATEADD(month, DATEDIFF(month, 0, @Date), 0) AS Start,
DATEADD(d, -DAY(DATEADD(m,1,@date)),DATEADD(m,1,@date)) AS EndDate,
12 Cnt
UNION ALL
SELECT
DATEADD(month, -1, Start),
DATEADD(d, -DAY(DATEADD(m,1,Start-1)),DATEADD(m,1,Start-1)),
Cnt-1
FROM
T
WHERE
Cnt-1>0
)
INSERT INTO @tbl
(Start, EndDate)
SELECT
Start, EndDate
FROM T

RETURN
END

关于最近 12 个月的 SQL 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20493011/

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