2014-01-15 236 views
0

任何人都可以帮助我从当前日期(月)获取最近12个月的名称。 我想在slq服务器中进行此查询。从当前月份获取前12个月的名称/编号

+0

你到目前为止尝试过什么?请发布您已经在使用的代码。 – Raj

+0

你想包括当前月还是仅包括前12个月? –

回答

3

需要SQL服务器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 
+0

谢谢@clausen –

0

为什么不是一个简单的获取日期?

SELECT name FROM [yourtable] WHERE 
[tabledate] >= DATEADD(month, -12, GETDATE()) 

这是什么意思?

另一方面,如果这是您需要的解决方案,那么在谷歌上有很多例子可以快速搜索。这是常见的说法。

3

您可以使用公用表表达您的解决方案:

;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 
相关问题