2015-11-18 5 views
0

Я создаю запрос, чтобы получить сотрудников за два дня до StartDate и через два дня после EndDate. Он отлично работает для StartDate, который выпадает во вторник и четверг. Это не сработает правильно, если в эти дни выпадет пятница на понедельник. Я не хочу рассчитать по субботам и воскресеньям.Рассчитать рабочий день в SQL Server

Вот мой запрос:

select 
    FirstName, 
    LastName, 
    StartDate, 
    EndDate 
from 
    Students 
where 
    StartDate > GetDate()-2 
    AND EndDate < GetDate() +2 

Как я могу изменить его рассчитывать только в будние дни?

спасибо!

+0

Потенциально связанные: http://stackoverflow.com/questions/1803987/how-do-i-exclude-weekend-days-in-a-sql-server-query – AHiggins

+0

Если 'GETDATE()' является пятницей, вы хотите видеть студентов, которые закончили в следующий понедельник или вторник? – AHiggins

+0

Ух, я об этом не думал. Мое главное - перечислить всех учеников, у которых StartDate составляет менее 2 дней с сегодняшнего дня и через 2 дня после сегодняшнего дня, без ограничений на выходные (Sat & Sun). Благодарю. –

ответ

0

Если я правильно понял, ваша дата начала не может быть в выходные дни. Чтобы исключить студентов, которые начали в выходные, добавьте в свой пункт AND datepart(dw, StartDate) not in (1,7).

select 
    FirstName, 
    LastName, 
    StartDate, 
    EndDate 
from 
    Students 
where 
    StartDate > GetDate()-2 
    AND EndDate < GetDate() +2 
    AND datepart(dw, StartDate) not in (1,7) 

Надеюсь, это поможет. Обязательно проверьте стрелку вверх, если этот ответ вам был полезен!

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