How do I exclude Weekend days in a SQL Server query?

天大地大妈咪最大 提交于 2019-11-26 08:59:44

问题


How do I exclude values in a DateTime column that are Saturdays or Sundays?

For example, given the following data:

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

this is the result I\'m looking for:

date_created
\'2009-11-26 09:00:00\'  -- Thursday
\'2009-11-27 09:00:00\'  -- Friday
\'2009-11-30 09:00:00\'  -- Monday

Thanks!


回答1:


When dealing with day-of-week calculations, it's important to take account of the current DATEFIRST settings. This query will always correctly exclude weekend days, using @@DATEFIRST to account for any possible setting for the first day of the week.

SELECT *
FROM your_table
WHERE ((DATEPART(dw, date_created) + @@DATEFIRST) % 7) NOT IN (0, 1)



回答2:


SELECT date_created
FROM your_table
WHERE DATENAME(dw, date_created) NOT IN ('Saturday', 'Sunday')



回答3:


Assuming you're using SQL Server, use DATEPART with dw:

SELECT date_created
FROM your_table
WHERE DATEPART(dw, date_created) NOT IN (1, 7);

EDIT: I should point out that the actual numeric value returned by DATEPART(dw) is determined by the value set by using SET DATEFIRST:
http://msdn.microsoft.com/en-us/library/ms181598.aspx




回答4:


Try the DATENAME() function:

select [date_created]
from table
where DATENAME(WEEKDAY, [date_created]) <> 'Saturday'
  and DATENAME(WEEKDAY, [date_created]) <> 'Sunday'



回答5:


The answer depends on your server's week-start set up, so it's either

SELECT [date_created] FROM table WHERE DATEPART(w,[date_created]) NOT IN (7,1)

if Sunday is the first day of the week for your server

or

SELECT [date_created] FROM table WHERE DATEPART(w,[date_created]) NOT IN (6,7)

if Monday is the first day of the week for your server

Comment if you've got any questions :-)




回答6:


Calculate Leave working days in a table column as a default value--updated

If you are using SQL here is the query which can help you: http://gallery.technet.microsoft.com/Calculate...




回答7:


Try this code

select (DATEDIFF(DD,'2014-08-01','2014-08-14')+1)- (DATEDIFF(WK,'2014-08-01','2014-08-14')* 2)


来源:https://stackoverflow.com/questions/1803987/how-do-i-exclude-weekend-days-in-a-sql-server-query

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!