如何在SQL Server查询中排除周末天数?

时间:2009-11-26 14:28:49

标签: sql-server tsql date weekend

如何排除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 个答案:

答案 0 :(得分:112)

在处理星期计算时,请务必考虑当前的DATEFIRST设置。此查询将始终正确排除周末天数,使用@@DATEFIRST来说明一周中第一天的任何可能设置。

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

答案 1 :(得分:17)

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

答案 2 :(得分:11)

假设您使用的是SQL Server,请将DATEPART与dw:

一起使用
SELECT date_created
FROM your_table
WHERE DATEPART(dw, date_created) NOT IN (1, 7);

编辑:我应该指出DATEPART(dw)返回的实际数值是由使用SET DATEFIRST设置的值确定的:
http://msdn.microsoft.com/en-us/library/ms181598.aspx

答案 3 :(得分:8)

尝试DATENAME()功能:

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

答案 4 :(得分:2)

答案取决于服务器的周开始设置,所以它是

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)

如果星期一是您服务器一周的第一天

如果您有任何疑问,请注意: - )

答案 5 :(得分:1)

计算表格列中的工作日作为默认值 - 已更新

如果您在这里使用SQL,那么该查询可以帮助您:http://gallery.technet.microsoft.com/Calculate...

答案 6 :(得分:-1)

试试此代码

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