如何获得以下输出?
[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 :(得分: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
答案 1 :(得分: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)
答案 2 :(得分:0)
我能够找到自己的答案.... 感谢Buddy试图帮助我...
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<=@MaxDate)
begin
set @COLSPIVOT=@COLSPIVOT+'['+convert(varchar(10),@i)+']'
if(@i!=@MaxDate)
begin
set @COLSPIVOT=@COLSPIVOT+','
end
set @i=@i+1
end
select @COLSPIVOT