2013-11-28 44 views
-2

如何獲得跟蹤輸出?SQL Server 2008中的日期明智報告

[1],[2],[3],[4],[5],[6],[8],[9],[10],[11],[12],[13],[14],[15],[16],[17] 
,[18],[19],[20] 
,[21],[22],[23],[24],[25],[26],[27],[28],[29],[30] 

需要獲取來自特定月份的所有日期在SQL Server

我想顯示當天的日期明智的報告

例子: 如果我通過日期'11/01/2012' ,那麼它應該返回以上結果 ,如果我通過12月比31天。

+0

你想_days list_那個月? –

回答

0

問題非常明確,但是嘗試

DECLARE @epoch DATETIME = '20130101' 

;WITH cte AS 
(
    SELECT @epoch DateKey 
    UNION ALL 
    SELECT DATEADD(D, 1, DateKey) 
    FROM cte 
    WHERE MONTH(DATEADD(D, 1, DateKey))=MONTH(@epoch) 
) 

SELECT * FROM cte 
0

試試下面的代碼

declare @date datetime = '09/10/2012' 
declare @noofdays int 

select @noofdays =datediff(day, @date, dateadd(month, 1, @date)) 

DECLARE @startDate DATETIME=CAST(MONTH(@date) AS VARCHAR) + '/' + '01/' + + CAST(YEAR(@date) AS VARCHAR) -- mm/dd/yyyy 
DECLARE @endDate DATETIME= CAST(MONTH(@date) AS VARCHAR) + '/' + cast(@noofdays as varchar) + '/' + CAST(YEAR(@date) AS VARCHAR) 


;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) 
0

我能找出答案我自己.... 感謝好友試圖幫助我...

DECLARE @COLSPIVOT AS NVARCHAR(MAX)='' 
declare @MaxDate int 
set @MaxDate=(SELECT day(DATEADD(ms,-2,DATEADD(MONTH, DATEDIFF(MONTH,0,'8/1/2013')+1,0))) 
AS [Current Month]) 
    declare @i int =1 
    while (@i<[email protected]) 
    begin 
     set @[email protected]+'['+convert(varchar(10),@i)+']' 
     if(@[email protected]) 
     begin 
      set @[email protected]+',' 
     end 
     set @[email protected]+1 
    end 
select @COLSPIVOT 
+0

確定沒問題..反正剛剛有幫助 –