选择月份的第一天和当前日期之间的所有日期

rah*_*rma 4 sql sql-server-2008

只想选择日期和月份的第一天之间的所有日期.我想在临时表中使用填充所有日期

declare @temp table 
 (
   ddate datetime 
  ) 
Run Code Online (Sandbox Code Playgroud)

我尝试过 with cte ,我不想使用while循环,因为我想在存储过程中避免.

例如,就像今天一样 11-oct-2012

所以临时表应该有11行,从开始1-oct-201211-oct-2012

Nil*_*was 21

试试这个

DECLARE @startDate DATE=CAST(MONTH(GETDATE()) AS VARCHAR) + '/' + '01/' +  + CAST(YEAR(GETDATE()) AS VARCHAR)  -- mm/dd/yyyy
DECLARE @endDate DATE=GETDATE() -- mm/dd/yyyy

SELECT [Date] = DATEADD(Day,Number,@startDate) 
FROM  master..spt_values 
WHERE Type='P'
AND DATEADD(day,Number,@startDate) <= @endDate
Run Code Online (Sandbox Code Playgroud)

要么

DECLARE @startDate DATETIME=CAST(MONTH(GETDATE()) AS VARCHAR) + '/' + '01/' +  + CAST(YEAR(GETDATE()) AS VARCHAR) -- mm/dd/yyyy
DECLARE @endDate DATETIME= GETDATE() -- mm/dd/yyyy

;WITH Calender AS 
(
    SELECT @startDate AS CalanderDate
    UNION ALL
    SELECT CalanderDate + 1 FROM Calender
    WHERE CalanderDate + 1 <= @endDate
)
SELECT [Date] = CONVERT(VARCHAR(10),CalanderDate,25) 
FROM Calender
OPTION (MAXRECURSION 0)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述