使用SQL在接下来的5年中每月选择同一天?

Pri*_*ton 3 sql sql-server sql-server-2008

如何使用SQL在接下来的5年中每月选择同一天?

例如:

  1. 2013年1月5日
  2. 2013年2月5日
  3. 2013年3月5日

我试过了:

select dateadd(day,-day(dateadd(month,1,current_timestamp)) , dateadd(month,1,current_timestamp) )
Run Code Online (Sandbox Code Playgroud)

Adr*_*der 7

怎么样的

DECLARE @StartDate DATETIME = '05 Jan 2013',
        @YearsAdded INT = 5

;WITH Dates AS (
        SELECT  @StartDate [Date]
        UNION ALL
        SELECT  DATEADD(MONTH,1,[Date])
        FROM    Dates
        WHERE   DATEADD(MONTH,1,[Date]) <= DATEADD(YEAR,@YearsAdded,@StartDate)
)
SELECT  *
FROM    Dates
OPTION (MAXRECURSION 0)
Run Code Online (Sandbox Code Playgroud)

SQL Fiddle DEMO