sql不在两个工作日和时间之间

时间:2017-09-06 21:40:25

标签: sql-server

我有一个监视连接过程的查询。现在我陷入困境,需要为工作日和时间范围设置适当的监控。

该过程从星期日22:00开始,然后下降5分钟。在21:55 - 每天到周五。 (星期日21:55至22:00不上升)

以下是我尝试的SQL查询:

IF CASE
       WHEN (100 * DATEPART(hh, GETDATE())) 
                 + DATEPART(MINUTE, GETDATE()) 
          BETWEEN 2155 AND 2200   -- Monitoring for whole day, wen connection is up
          AND DATEPART(dw,GETDATE()), (100 * DATEPART(hh, GETDATE())) 
            + DATEPART(MINUTE, GETDATE()) 
          NOT BETWEEN (5, 2155) AND (0, 2200) --except trough Friday night to Sunday (weekdays and time).

       THEN 1 ELSE 0   END = 0

1 个答案:

答案 0 :(得分:0)

您需要在案例的部分中添加一些SELECT语句,其中您将获取范围之间的值。试试这个:

SELECT
    CASE
        WHEN(100 * DATEPART(hh, GETDATE())) + DATEPART(MINUTE, GETDATE()) -- = 731
            BETWEEN 2155 AND 2200   -- Monitoring for whole day, wen connection is up
            AND (
                (
                    SELECT
                        DATEPART(dw, GETDATE())
                ) NOT BETWEEN(5) AND(0)
                AND
                (
                    SELECT
                        (100 * DATEPART(hh, GETDATE())) + DATEPART(MINUTE, GETDATE())
                ) NOT BETWEEN(2155) AND(2200)
                )
            THEN 1
            ELSE 0
        END;

第一次计算等于731,所以查看查询我会除了它返回'0',它会