/***Drop temp table if exisits***/
IF OBJECT_ID('tempdb..#CalculteWorkingDays') IS NOT NULL
DROP TABLE #CalculteWorkingDays
GO
/***Temp table for data***/
CREATE TABLE #CalculteWorkingDays
(
[CreatedDate] DATE,
[ClosedDate] DATE,
[ATA(days)] INT
)
/***Insert data to temp table***/
INSERT INTO #CalculteWorkingDays
( [CreatedDate], [ClosedDate] )
SELECT '12/01/2003', '12/31/2003' UNION ALL
SELECT '12/01/2004', '12/31/2004' UNION ALL
SELECT '12/01/2005', '12/31/2005' UNION ALL
SELECT '12/01/2006', '12/31/2006' UNION ALL
SELECT '12/01/2007', '12/31/2007' UNION ALL
SELECT '12/01/2008', '12/31/2008' UNION ALL
SELECT '12/01/2009', '12/31/2009' UNION ALL
SELECT '12/01/2010', '12/31/2010' UNION ALL
SELECT '12/01/2011', '12/31/2011' UNION ALL
SELECT '12/01/2012', '12/31/2012' UNION ALL
SELECT '12/01/2013', '12/31/2013' UNION ALL
SELECT '12/01/2014', '12/31/2014'
/***Now calculte the Working days***/
--DATEDIFF Returns the number of dd(day),wk(week) boundaries that are
--crossed between two specified dates.
--By Default Sunday is considered as 1st day of week and Saturday
--as Last day of week.
-- Calculate the working days and update it to [ATA(days)] column
-- Caluculate the days between dates . DATEDIFF + 1 Includes Both Dates
-- Exclude the no of Weeks crossed between dates * 2 (for Sat and Sun)
-- If start date falls on Sunday then exclude this from Working days caluculation
-- If end date falls on Saturday then exclude this from Working days caluculation
-- Exclude BankHolidays(Doesn't include here.We need to calcul;ate them eother by mainitng sepetare table for holidays)
UPDATE #CalculteWorkingDays
SET [ATA(days)] =(DATEDIFF(dd, [CreatedDate], [ClosedDate]) + 1)
-(DATEDIFF(wk, [CreatedDate], [ClosedDate]) * 2)
-(CASE WHEN DATENAME(dw, [CreatedDate]) = 'Sunday' THEN 1 ELSE 0 END)
-(CASE WHEN DATENAME(dw, [ClosedDate]) = 'Saturday' THEN 1 ELSE 0 END)
SELECT * FROM #CalculteWorkingDays
Thanks for sharing a comprehensive review post, your site having informative & valuable content. I appreciated your efforts.
ReplyDeleteHire .Net Developers India
Hire .Net Developers texas
.Net Development Company India
hire dot net developer frisco
Hire .Net Developers Tampa
.net development company in india
.net developers india
dot net development company in texas
hire .net developer india