April 19, 2010 at 1:25 pm
did you try the code in my previous post?
here is a slighly modified version - it seems to meet your requirements:
DECLARE @openDate DATETIME
DECLARE @closedDate DATETIME
SET @openDate = '4/19/2010'
SET @closedDate = '4/27/2010';
WITH dateCTE AS
(
SELECT @openDate AS theDate
UNION ALL
SELECT theDate + 1
FROM dateCTE
WHERE theDate + 1 < (@closedDate-1)
)
SELECT COUNT(theDate) AS no_of_working_days
FROM dateCTE
WHERE DATEPART(weekday,theDate) NOT IN (1,7)
The above returns 5 (days) on my machine
April 19, 2010 at 7:21 pm
SQL_NuB (4/19/2010)
that is setup for the start date or end date begin on a weekend, I need to find out if the day between my two dates are a saturday or sunday and not count themso if my openDate = 4/19/2010 and my closedDate = 4/27/10, I want to see 5 business days, the 19th isn't counted, saturday and sunday aren't counted and the 27th isn't counted, so I want to see 5 business days for those two dates, My open and close date will never be a weekend due to the frontend app won't allow it, however, a weekend can be in between the open and closed dates
Are you talking about the article I posted because, if you are, that's absolutely not what happens.
--Jeff Moden
Change is inevitable... Change for the better is not.
April 21, 2010 at 5:07 am
Jeff Moden (4/19/2010)
SQL_NuB (4/19/2010)
that is setup for the start date or end date begin on a weekend, I need to find out if the day between my two dates are a saturday or sunday and not count themso if my openDate = 4/19/2010 and my closedDate = 4/27/10, I want to see 5 business days, the 19th isn't counted, saturday and sunday aren't counted and the 27th isn't counted, so I want to see 5 business days for those two dates, My open and close date will never be a weekend due to the frontend app won't allow it, however, a weekend can be in between the open and closed dates
Are you talking about the article I posted because, if you are, that's absolutely not what happens.
yes, i entered in a weekday date, and ended it 5 days after including 2 weekend days, and the weekend days were counted. If I started on a weekend day, and ended on a weekday, my start date wasn't counted.
April 24, 2010 at 6:20 pm
SQL_NuB (4/21/2010)
Jeff Moden (4/19/2010)
SQL_NuB (4/19/2010)
that is setup for the start date or end date begin on a weekend, I need to find out if the day between my two dates are a saturday or sunday and not count themso if my openDate = 4/19/2010 and my closedDate = 4/27/10, I want to see 5 business days, the 19th isn't counted, saturday and sunday aren't counted and the 27th isn't counted, so I want to see 5 business days for those two dates, My open and close date will never be a weekend due to the frontend app won't allow it, however, a weekend can be in between the open and closed dates
Are you talking about the article I posted because, if you are, that's absolutely not what happens.
yes, i entered in a weekday date, and ended it 5 days after including 2 weekend days, and the weekend days were counted. If I started on a weekend day, and ended on a weekday, my start date wasn't counted.
You need to go back and read the article. The 19th is intentionally included as a day. So is the 27th. That's the way the code was written. If you want to see 5 days instead of the 7 the code returns then, obviously, you need to change the code a bit. The original code looks like this...
DECLARE @StartDate DATETIME,
@EndDate DATETIME
SELECT @StartDate = '2010-04-19',
@EndDate = '2010-04-27'
SELECT
(DATEDIFF(dd, @StartDate, @EndDate) + 1)
-(DATEDIFF(wk, @StartDate, @EndDate) * 2)
-(CASE WHEN DATENAME(dw, @StartDate) = 'Sunday' THEN 1 ELSE 0 END)
-(CASE WHEN DATENAME(dw, @EndDate) = 'Saturday' THEN 1 ELSE 0 END)
... and returns 7 days as it was designed to do. If you don't want it to include the end dates, then you need to change it...
DECLARE @StartDate DATETIME,
@EndDate DATETIME
SELECT @StartDate = '2010-04-19',
@EndDate = '2010-04-27'
SELECT
(DATEDIFF(dd, @StartDate, @EndDate) - 1)
-(DATEDIFF(wk, @StartDate, @EndDate) * 2)
-(CASE WHEN DATENAME(dw, @StartDate) = 'Sunday' THEN 1 ELSE 0 END)
-(CASE WHEN DATENAME(dw, @EndDate) = 'Saturday' THEN 1 ELSE 0 END)
If you want it to do something funky if the start or end date is on the weekends, then you'd need to make a change for that, as well. I'll let you have the pleasure of doing that.
--Jeff Moden
Change is inevitable... Change for the better is not.
Viewing 4 posts - 16 through 18 (of 18 total)
You must be logged in to reply to this topic. Login to reply
This website stores cookies on your computer.
These cookies are used to improve your website experience and provide more personalized services to you, both on this website and through other media.
To find out more about the cookies we use, see our Privacy Policy