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-2012到11-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)
