Thursday, October 11, 2012

Select all dates between first day of month and current date without loop


DECLARE @startDate DATETIME=CAST(MONTH(GETDATE()) AS VARCHAR) + '/' + '01/' +  + CAST(YEAR(GETDATE()) AS VARCHAR) -- mm/dd/yyyy
DECLARE @endDate DATETIME= GETDATE() -- mm/dd/yyyy
;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 CalenderOPTION (MAXRECURSION 0)
DECLARE @startDate DATE=CAST(MONTH(GETDATE()) AS VARCHAR) + '/' + '01/' +  + CAST(YEAR(GETDATE()) AS VARCHAR)  -- mm/dd/yyyy
DECLARE @endDate DATE=GETDATE() -- mm/dd/yyyy
SELECT [Date] = DATEADD(Day,Number,@startDate) FROM  master..spt_values WHERE Type='P'
AND DATEADD(day,Number,@startDate) <= @endDate
declare @temp table (ddate datetime);
insert @tempselect DATEDIFF(d,0,GetDate()-Number)
from master..spt_valueswhere type='p' and number < DatePart(d,Getdate())
order by 1;

No comments:

Post a Comment