un poco rebuscado:
Código SQL:
Ver originalCREATE TABLE #temp1(
dias datetime
)
CREATE TABLE #temp2(
dias datetime
)
DECLARE @inicio VARCHAR(20)
DECLARE @fin VARCHAR(20)
DECLARE @fecha_inicio VARCHAR(20)
DECLARE @mes_valida INT
DECLARE @x INT
DECLARE @mes INT
DECLARE @año INT
SET @inicio='2012-01'
SET @x=1
SET @mes_valida=DATEPART(mm,CONVERT(datetime,@inicio + '-01'))
SET @año=DATEPART(yyyy,CONVERT(datetime,@inicio + '-01'))
while @x<=31
BEGIN
SELECT @fecha_inicio=CONVERT(datetime,(CONVERT(VARCHAR(20),@año) + '-' + CONVERT(VARCHAR(2),@x) + '-' + CONVERT(VARCHAR(20),@mes_valida)))
IF (DATEPART(mm,@fecha_inicio) = @mes_valida)
BEGIN
INSERT INTO #temp1 VALUES (@fecha_inicio)
END
SET @x=@x+1
END
DECLARE @desde datetime
DECLARE @hasta datetime
SET @desde=CONVERT(datetime,'2010-05-12')
SET @hasta=CONVERT(datetime,'2013-30-01')
SET @x=0
while @x<=datediff(dd,@desde,@hasta)
BEGIN
INSERT INTO #temp2 VALUES (dateadd(dd,@x,@desde))
SET @x=@x+1
END
SELECT COUNT(*) dias FROM #temp2 WHERE dias IN (SELECT * FROM #temp1)
DELETE FROM #temp1
DELETE FROM #temp2
pero regresa lo que necesitas :)