MSSQL在两个日期之间获得一个表(月/年)

时间:2013-05-15 07:18:57

标签: sql-server

我必须使用MSSQL服务器在两个日期之间获得一个月份+年份的表。 可以说给定的日期是2012年2月1日至2012年4月5日。然后表格看起来应该是这样的

 Feb 2012
 Mar 2012
 April 2012

对于实现这一目标的任何建议都非常感谢?

1 个答案:

答案 0 :(得分:11)

试试这个 -

<强>查询:

DECLARE 
      @start DATE = '20120201'
    , @end DATE = '20120405'

;WITH cte AS 
(
    SELECT dt = DATEADD(DAY, -(DAY(@start) - 1), @start)

    UNION ALL

    SELECT DATEADD(MONTH, 1, dt)
    FROM cte
    WHERE dt < DATEADD(DAY, -(DAY(@end) - 1), @end)
)
SELECT CONVERT(CHAR(4), dt, 100) + CONVERT(CHAR(4), dt, 120) 
FROM cte

<强>输出:

--------
Feb 2012
Mar 2012
Apr 2012