DECLARE @Start_Date DATETIME
SET @Start_Date = GETDATE()
SET @Start_Date = CONVERT(VARCHAR(25),DATEADD(dd,-(DAY(@Start_Date)-1),@Start_Date),101)
DECLARE @Holiday TABLE(HoliDay DATETIME)
INSERT INTO @Holiday(HoliDay) VALUES('2012-08-15')
;WITH MonthDays(day_num, calendar_dt) AS
( SELECT 1 AS day_num,
DATEADD(d, -DAY(@Start_Date)+1, @Start_Date ) AS calendar_dt
UNION ALL
SELECT day_num + 1,
DATEADD(d, 1, calendar_dt)
FROM MonthDays
WHERE MONTH(DATEADD(d, 1, calendar_dt)) = MONTH(@Start_Date)
)
--SELECT * FROM MonthDays
/*
SELECT *, datename(dw, calendar_dt), (DATEDIFF(week, DATEADD(MONTH, DATEDIFF(MONTH, 0, calendar_dt), 0), calendar_dt) +1) as [Week]
FROM MonthDays
WHERE ((DATEPART(dw, calendar_dt) + @@DATEFIRST) % 7) NOT IN (1)
-- 0 for saturday, 1 for sunday
--WHERE ((DATEPART(dw, calendar_dt) + @@DATEFIRST) % 7) NOT IN (0, 1)
--http://msdn.microsoft.com/en-us/library/ms174420(v=sql.90).aspx
*/
SELECT day_num ,
calendar_dt,
WeekDayName,
[Week]
FROM ( SELECT day_num ,
calendar_dt ,
DATENAME(dw, calendar_dt) AS WeekDayName,
(DATEDIFF(week, DATEADD(MONTH, DATEDIFF(MONTH, 0, calendar_dt), 0), calendar_dt) +1) AS [Week]
FROM MonthDays
WHERE ((DATEPART(dw, calendar_dt) + @@DATEFIRST) % 7 ) NOT IN (1)
) AS T
WHERE ( WeekDayName != 'Saturday'
OR [Week] NOT IN (1, 3, 5)
)
--To remove the holiday
AND day_num NOT IN
(SELECT DATEPART(DD, HoliDay)
FROM @Holiday
)
Thursday, August 30, 2012
Get only business days in a month in SQL SERVER
Labels:
SQL
Location:
Idappadi Rd, Idappadi, Tamil Nadu, India
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment