67

如何排除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

谢谢!

4

7 回答 7

134

在处理星期几计算时,考虑当前DATEFIRST设置很重要。此查询将始终正确排除周末,@@DATEFIRST用于说明一周第一天的任何可能设置。

SELECT *
FROM your_table
WHERE ((DATEPART(dw, date_created) + @@DATEFIRST) % 7) NOT IN (0, 1)
于 2009-11-26T14:47:28.783 回答
23
SELECT date_created
FROM your_table
WHERE DATENAME(dw, date_created) NOT IN ('Saturday', 'Sunday')
于 2009-11-26T14:49:22.817 回答
14

假设您使用的是 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

于 2009-11-26T14:39:26.447 回答
10

试试这个DATENAME()功能:

select [date_created]
from table
where DATENAME(WEEKDAY, [date_created]) <> 'Saturday'
  and DATENAME(WEEKDAY, [date_created]) <> 'Sunday'
于 2009-11-26T14:30:37.197 回答
4

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

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)

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

如果您有任何问题,请发表评论:-)

于 2009-11-26T14:42:01.650 回答
3

计算表格列中的休假天数作为默认值--更新

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

于 2012-10-25T19:11:09.620 回答
0

试试这个代码

select (DATEDIFF(DD,'2014-08-01','2014-08-14')+1)- (DATEDIFF(WK,'2014-08-01','2014-08-14')* 2)
于 2014-08-14T10:46:08.137 回答