2016-07-06 3 views
0

Привет У меня есть следующая функция для разработки WD между двумя датами. мой запрос ... у меня есть две даты с той же датой, например. 06/07/2016, и я хочу, чтобы WD отображался как 0, но вместо этого он отображается как 1. есть ли возможность изменить способ разработки WD?SQL Рабочие дни между двумя датами

ALTER FUNCTION [dbo].[CalculateNumberOFWorkDays] (@StartDate datetime, @EndDate datetime) 
RETURNS int 
AS 
BEGIN 

SET @StartDate = DATEADD(dd, DATEDIFF(dd, 0, @StartDate), 0) 
SET @EndDate = DATEADD(dd, DATEDIFF(dd, 0, @EndDate), 0) 

DECLARE @WORKDAYS INT 
SELECT @WORKDAYS = (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) 

RETURN @WORKDAYS END 

ответ

0

взломали ...

SELECT @WORKDAYS = (DATEDIFF(dd, @StartDate, @EndDate) + 0) 

, кажется, сделали работу! :-)

+0

Рад, что вы это поняли, довольно быстро! Просто голова, '+ 0' не требуется. – scsimon

Смежные вопросы