如何排除SQL Server查询中的周末date?
如何排除星期六或星期日的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
谢谢!
在处理星期计算时,考虑当前的DATEFIRST
设置很重要。 此查询将始终正确排除周末天数,使用@@DATEFIRST
来说明一周中第一天的任何可能设置。
SELECT * FROM your_table WHERE ((DATEPART(dw, date_created) + @@DATEFIRST) % 7) NOT IN (0, 1)
SELECT date_created FROM your_table WHERE DATENAME(dw, date_created) NOT IN ('Saturday', 'Sunday')
假设你正在使用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
试试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)
如果星期一是您服务器的第一天
如果您有任何问题,请留言:-)
计算将表格列中的工作天数保留为默认值 – 已更新
如果您使用SQL这里是可以帮助您的查询: http://gallery.technet.microsoft.com/Calculate …
试试这个代码
select (DATEDIFF(DD,'2014-08-01','2014-08-14')+1)- (DATEDIFF(WK,'2014-08-01','2014-08-14')* 2)