2013-11-28 38 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

确定没问题..反正刚刚有帮助 –