【发布时间】:2014-01-15 17:47:06
【问题描述】:
任何人都可以帮助我从当前日期(月份)获取过去 12 个月的名称。 我想在 slq 服务器中进行此查询。
【问题讨论】:
-
到目前为止你尝试过什么?请发布您一直在处理的代码。
-
您要包括当前月份还是仅包括前 12 个月?
标签: sql sql-server tsql
任何人都可以帮助我从当前日期(月份)获取过去 12 个月的名称。 我想在 slq 服务器中进行此查询。
【问题讨论】:
标签: sql sql-server tsql
您可以为您的解决方案使用公用表表达式:
;WITH DateRange AS(
SELECT GETDATE() Months
UNION ALL
SELECT DATEADD(mm, -1, Months)
FROM DateRange
WHERE Months > DATEADD(mm, -11, GETDATE())
)
SELECT DateName(m, Months) AS Months, Month(Months) AS ID FROM DateRange
按顺序显示前几个月:
Months ID
------------------------------ -----------
January 1
December 12
November 11
October 10
September 9
August 8
July 7
June 6
May 5
April 4
March 3
February 2
【讨论】:
需要 sql-server 2008
select datename(m,dateadd(m,-a,current_timestamp)) monthname,
datepart(m,dateadd(m,-a,current_timestamp)) id
from (values (1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(11),(12)) x(a)
结果:
monthname id
December 12
November 11
October 10
September 9
August 8
July 7
June 6
May 5
April 4
March 3
February 2
January 1
【讨论】:
为什么不是简单的获取日期?
SELECT name FROM [yourtable] WHERE
[tabledate] >= DATEADD(month, -12, GETDATE())
这是什么意思?
附带说明,如果这是您需要的解决方案,Google 周围有很多示例可以快速搜索。因为这是常见的说法。
【讨论】: