Encuentra todos los días entre dos fechas [SQL Server]

Algunas veces cuando uno desarrolla un sistema, necesita obtener la lista de todos los días entre dos fechas determinadas. Seguramente hay muchas formas, pero esta es una de ellas más modular.

 


Create PROCEDURE getAllDaysBetweenTwoDate


(


@FromDate DATETIME,    


@ToDate DATETIME


)


AS


BEGIN


    


    DECLARE @TOTALCount INT


    SET @FromDate = DATEADD(DAY,-1,@FromDate)


    Select  @TOTALCount= DATEDIFF(DD,@FromDate,@ToDate);


 


    WITH d AS 


            (


              SELECT top (@TOTALCount) AllDays = DATEADD(DAY, ROW_NUMBER() 


                OVER (ORDER BY object_id), REPLACE(@FromDate,'-',''))


              FROM sys.all_objects


            )


        SELECT AllDays From d


        


    RETURN 


END


GO


 


--exec getAllDaysBetweenTwoDate '2013-08-15','2013-8-21'



Y el resultado sería:



image

0 comentarios: