【发布时间】:2013-12-18 08:46:56
【问题描述】:
这次我需要一个函数来选择前 12 个月。 如果选择 2013 年 12 月,它应该返回 2013 年 11 月到 2012 年 11 月的数据。 结果应该显示:
- Year - Month
- 2013 - 11
- 2013 - 10
- 2013 - 09
我之前的问题得到了回答,但我真的不知道如何编辑日期部分来选择月份:
ALTER function [dbo].[LastMonths]
(
@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
感谢所有热心帮助的人!
【问题讨论】:
标签: sql-server sql-server-2008 tsql datetime ssms