【问题标题】:Get Previous 12 months name/id from current month从当前月份获取前 12 个月的名称/ID
【发布时间】:2014-01-15 17:47:06
【问题描述】:

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

【问题讨论】:

  • 到目前为止你尝试过什么?请发布您一直在处理的代码。
  • 您要包括当前月份还是仅包括前 12 个月?

标签: sql sql-server tsql


【解决方案1】:

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

;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

【讨论】:

    【解决方案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
    

    【讨论】:

      【解决方案3】:

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

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

      这是什么意思?

      附带说明,如果这是您需要的解决方案,Google 周围有很多示例可以快速搜索。因为这是常见的说法。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-09-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多