Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获取SQL Server中两个日期(星期五除外)之间的日期差_Sql_Sql Server - Fatal编程技术网

获取SQL Server中两个日期(星期五除外)之间的日期差

获取SQL Server中两个日期(星期五除外)之间的日期差,sql,sql-server,Sql,Sql Server,我有以下两个日期: startDate = '2017-04-04' and endDate = '2017-04-12' 我想使用SQL Server查找这两个日期之间的总天数,不包括“星期五” 非常感谢SQL Server专家提供的任何帮助!!提前谢谢只需在查询中添加以下子句即可 select count(*) from table where startDate >= '2017-01-12' and endDate <= '2017-04-27' and datena

我有以下两个日期:

startDate = '2017-04-04'  and  endDate = '2017-04-12'
我想使用SQL Server查找这两个日期之间的总天数,不包括“星期五”


非常感谢SQL Server专家提供的任何帮助!!提前谢谢

只需在查询中添加以下子句即可

select count(*) from table
where startDate >= '2017-01-12' and endDate <= '2017-04-27' 
and datename(WEEKDAY,startdate))<>'Friday'
从表中选择计数(*)

当开始日期>='2017-01-12'和结束日期时,您可以使用
DATENAME
检查
“星期五”
执行以下操作:

DECLARE @startDate DATETIME
DECLARE @endDate DATETIME
SET @startDate = '2017-04-04'
SET @endDate = '2017-04-12'

Declare @count int
set @count=0

    while @startDate < @endDate
    Begin
        IF DATENAME(dw, @startDate) <> 'Friday'
            SET @count = @count + 1
        SET @startDate = DateAdd(d, 1, @startDate)
    END
select @count

为了更容易理解,请使用所讨论的给定日期编写整个查询。@TanvirArjel:请参阅更新,但不确定为什么有两个日期以及它如何影响接下来的结果。根据你的说法,答案应该是什么?应该是7,因为他们之间有一个星期五。用它检查…选择DATEDIFF(day,'2017-04-04','2017-04-12')作为DiffDate。这返回8。你的代码应该返回7。DATEDIFF检查你需要跨越的边界,以便在任何方向返回日期。但这并不能解决我的问题!!有没有可能我期望的是什么?…仍然没有按预期工作!!核对一下。。。选择DATEDIFF(day,'2017-04-04','2017-04-22')作为DiffDate…此返回18,您的代码应返回15,因为它们之间有3个星期五,但您的代码返回16
7