Как исключить выходные дни в запросе SQL Server?
как я могу исключить значения в DateTime
колонка, которая по субботам или воскресеньям?
например, учитывая следующие данные:
date_created
'2009-11-26 09:00:00' -- Thursday
'2009-11-27 09:00:00' -- Friday
'2009-11-28 09:00:00' -- Saturday
'2009-11-29 09:00:00' -- Sunday
'2009-11-30 09:00:00' -- Monday
это результат, который я ищу:
date_created
'2009-11-26 09:00:00' -- Thursday
'2009-11-27 09:00:00' -- Friday
'2009-11-30 09:00:00' -- Monday
спасибо!
7 ответов:
при работе с расчетами дня недели важно учитывать текущий
DATEFIRST
настройки. Этот запрос всегда будет корректно исключать выходные дни, используя@@DATEFIRST
для учета любых возможных настроек на первый день недели.SELECT * FROM your_table WHERE ((DATEPART(dw, date_created) + @@DATEFIRST) % 7) NOT IN (0, 1)
предполагая, что вы используете SQL Server, используйте DATEPART с dw:
SELECT date_created FROM your_table WHERE DATEPART(dw, date_created) NOT IN (1, 7);
EDIT: Я должен указать, что фактическое числовое значение, возвращаемое DATEPART (dw), определяется значением, установленным с помощью SET DATEFIRST:
http://msdn.microsoft.com/en-us/library/ms181598.aspx
попробовать
DATENAME()
функция:select [date_created] from table where DATENAME(WEEKDAY, [date_created]) <> 'Saturday' and DATENAME(WEEKDAY, [date_created]) <> 'Sunday'
ответ зависит от недельного запуска вашего сервера, так что это либо
SELECT [date_created] FROM table WHERE DATEPART(w,[date_created]) NOT IN (7,1)
Если воскресенье является первым днем недели для вашего сервера
или
SELECT [date_created] FROM table WHERE DATEPART(w,[date_created]) NOT IN (6,7)
Если понедельник является первым днем недели для вашего сервера
комментарий, если у вас есть какие-либо вопросы :-)
вычислить отпуск рабочих дней в столбце таблицы в качестве значения по умолчанию -- updated
Если вы используете SQL вот запрос, который может помочь вам:http://gallery.technet.microsoft.com/Calculate...