I have been wondering is there any operator/function in sql
server to tell about weekday between given day.
Example :11-19-2016 to 11-29-2016
I want check if there is tuesday between that day?
I have been wondering is there any operator/function in sql
server to tell about weekday between given day.
Example :11-19-2016 to 11-29-2016
I want check if there is tuesday between that day?
Try This:
declare @start varchar(100)='11-19-2016'
declare @end varchar(100)='11-29-2016'
;with dateRange as
(
select date = dateadd(dd, 1, @start)
where dateadd(dd, 1, @start) < @end
union all
select dateadd(dd, 1, date)
from dateRange
where dateadd(dd, 1, date) < @end
)
select date,DATENAME(dw,CAST(DATEPART(m, GETDATE()) AS VARCHAR)
+ '/'+ CAST(DATEPART(d, date) AS VARCHAR)
+ '/'+ CAST(DATEPART(yy, getdate()) AS VARCHAR)) as 'Day'
from dateRange where (DATENAME(dw,CAST(DATEPART(m, GETDATE()) AS VARCHAR)
+ '/'+ CAST(DATEPART(d, date) AS VARCHAR)
+ '/'+ CAST(DATEPART(yy, getdate()) AS VARCHAR)))='Tuesday'
The query below uses a recursive query to unfold the date range.
Then uses DATEPART to select only the Tuesdays from it.
But one could also use DATENAME instead.
declare @StartDate DATE = '2016-11-19';
declare @EndDate DATE = '2016-11-29';
--SET DATEFIRST 7;
-- The dw for tuesday is 3 when @@datefirst = 7 (default setting)
-- Since it depends on a usersetting, lets calculate it anyway.
declare @TuesdayWeekday INT = (7-@@datefirst + 2)%7+1;
;with DATES as
(
select @startdate as [Date]
union all
select dateadd(day, 1, [Date]) from DATES
where [Date] < @enddate
)
select [Date], datepart(dw,[Date]) as day_of_week, datename(dw,[Date]) as day_of_weekname
from DATES
where datepart(dw,[Date]) = @TuesdayWeekday;