检查是否有任何工作日内部时间给出sql server

时间:2016-11-29 07:56:27

标签: sql sql-server

我一直想知道sql服务器中是否有任何运算符/函数可以告诉给定日期之间的工作日。

示例:11-19-2016 to 11-29-2016我想检查那天之间是否有星期二?

2 个答案:

答案 0 :(得分:1)

试试这个:

declare @start varchar(100)='11-19-2016'
declare @end varchar(100)='11-29-2016'

;with dateRange as
(
  select date = dateadd(dd, 1, @start)
  where dateadd(dd, 1, @start) < @end
  union all
  select dateadd(dd, 1, date)
  from dateRange
  where dateadd(dd, 1, date) < @end
)
select  date,DATENAME(dw,CAST(DATEPART(m, GETDATE()) AS VARCHAR) 
  + '/'+ CAST(DATEPART(d, date) AS VARCHAR) 
  + '/'+ CAST(DATEPART(yy, getdate()) AS VARCHAR)) as 'Day'
from dateRange where (DATENAME(dw,CAST(DATEPART(m, GETDATE()) AS VARCHAR) 
  + '/'+ CAST(DATEPART(d, date) AS VARCHAR) 
  + '/'+ CAST(DATEPART(yy, getdate()) AS VARCHAR)))='Tuesday'

答案 1 :(得分:1)

下面的查询使用递归查询来展开日期范围。

然后使用DATEPART从中选择星期二。
但也可以使用DATENAME。

Observable