SQL Server:查询一周的特定时间,我们

路易斯-菲利普·德斯坎普

我需要运行一个查询,根据时间和日期返回数据。

  • 在一周内,它将返回 17:00 至 09:00 的数据。
  • 在周末,它将返回00:00到23:59的数据

数据将匹配一个数字值

这是我尝试过的,但返回的数据没有考虑数值

SELECT 
    I3TimeStampGMT, DNIS, AssignedWorkGroup, LocalName, RemoteNumber, 
    CallDurationSeconds
FROM
    CIC_Prod.dbo.calldetail_viw 
WHERE 
    (I3TimeStampGMT > '2017-12-01' 
    AND I3TimeStampGMT <= DATEADD(day,1,'2017-12-05') 
    AND (DATEPART(HH,I3TimeStampGMT) IN (18, 07)
         OR (DATEPART(HH,I3TimeStampGMT) = 17 AND DATEPART(MI,I3TimeStampGMT) >= 00) 
         OR (DATEPART(HH,I3TimeStampGMT) = 08 AND DATEPART(MI,I3TimeStampGMT) <= 59)
        )
    AND DATEPART(dw,I3TimeStampGMT) >= 2 AND DATEPART(dw,I3TimeStampGMT) <= 6
        --sun(1)-mon(2)-tue(3)-wed(4)-thu(5)-fri(6)-sat(7)
        )
    OR  I3TimeStampGMT > '2017-12-01' AND I3TimeStampGMT <= DATEADD(day,1,'2017-12-05')
    and (
        DATEPART(HH,I3TimeStampGMT) IN (18, 07)
        OR (DATEPART(HH,I3TimeStampGMT) = 17 AND DATEPART(MI,I3TimeStampGMT) >= 00) 
        OR (DATEPART(HH,I3TimeStampGMT) = 08 AND DATEPART(MI,I3TimeStampGMT) <= 59)
        )
    AND DATEPART(dw,I3TimeStampGMT) >= 7 AND DATEPART(dw,I3TimeStampGMT) <= 7


AND
LineId = 'SIP-100-UK'
AND(
DNIS = '4910045'
OR
DNIS = '4910044'
OR
DNIS = '4910043'
OR
DNIS = '4910025'
OR
DNIS = '4910024'
OR
DNIS = '4910023'
OR
DNIS = '4910021'
OR
DNIS = '4910026'
OR
DNIS = '4910019'
OR
DNIS = '4910022'
OR
DNIS = '4910020'
)
化脓

您的过滤器是使用ANDand 制作的OR,如果 中的条件之一OR为真,其余的应该是truefalse,这无关紧要。

为了考虑数值,它应该添加AND到前面的条件中,所以你需要另一对括号,我用--<<<-----

SELECT 
    I3TimeStampGMT, DNIS, AssignedWorkGroup, LocalName, RemoteNumber, 
    CallDurationSeconds
FROM
    CIC_Prod.dbo.calldetail_viw 
WHERE 
( --<<<------------------------------------------------------------------------------
    (I3TimeStampGMT > '2017-12-01' 
    AND I3TimeStampGMT <= DATEADD(day,1,'2017-12-05') 
    AND (DATEPART(HH,I3TimeStampGMT) IN (18, 07)
         OR (DATEPART(HH,I3TimeStampGMT) = 17 AND DATEPART(MI,I3TimeStampGMT) >= 00) 
         OR (DATEPART(HH,I3TimeStampGMT) = 08 AND DATEPART(MI,I3TimeStampGMT) <= 59)
        )
    AND DATEPART(dw,I3TimeStampGMT) >= 2 AND DATEPART(dw,I3TimeStampGMT) <= 6
        --sun(1)-mon(2)-tue(3)-wed(4)-thu(5)-fri(6)-sat(7)
        )
    OR  I3TimeStampGMT > '2017-12-01' AND I3TimeStampGMT <= DATEADD(day,1,'2017-12-05')
    and (
        DATEPART(HH,I3TimeStampGMT) IN (18, 07)
        OR (DATEPART(HH,I3TimeStampGMT) = 17 AND DATEPART(MI,I3TimeStampGMT) >= 00) 
        OR (DATEPART(HH,I3TimeStampGMT) = 08 AND DATEPART(MI,I3TimeStampGMT) <= 59)
        )
    AND DATEPART(dw,I3TimeStampGMT) >= 7 AND DATEPART(dw,I3TimeStampGMT) <= 7
)--<<<------------------------------------------------------------------------------

AND
LineId = 'SIP-100-UK'
AND(
DNIS = '4910045'
OR
DNIS = '4910044'
OR
DNIS = '4910043'
OR
DNIS = '4910025'
OR
DNIS = '4910024'
OR
DNIS = '4910023'
OR
DNIS = '4910021'
OR
DNIS = '4910026'
OR
DNIS = '4910019'
OR
DNIS = '4910022'
OR
DNIS = '4910020'
)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

一周中特定小时部分的数据总和-MS SQL查询

在特定时间运行 SQL 查询

仅在一周内运行 SQL 查询

SQL查询可根据特定一周的星期一至星期日将行分成多行

我们应该在 sql server 的更新查询中使用 alise 名称吗?

当我们在SQL Server 2012的选择查询中获得列名加整数时?

SQL Server查询以选择除在特定时间间隔内重复的记录之外的所有记录

如何在特定时间在SQL Server中自动触发查询

如何使用滑动日期但特定时间进行动态SQL Server查询?

SQL server,当我们在sql server中使用cast和float时,我们有一列数据decimal(38,35)被截断

SQL Server Group数据按周显示,但显示一周的开始

一周中几天的SQL PIVOT

SQL查询轨道,如何过滤我们当前的保留

我们如何编写下面的 SQL 查询

我们可以编写 SQL 查询而不是 CQL 吗?

SQL查询:在特定时间段内收藏的产品

当我们有一个列表时,SQL Server 中的 Json 值

在Oracle SQL中,如何仅获取当前一周的时间?

SQL查询以查找一周内有多少员工加入

SQL Server:让星期一成为一周的开始

SQL Server 中的一年中的哪一周

是否有一个 SQL 查询,我们为每个 id 分别应用一组条件?

是否有一个 SQL 查询,我们为每个 id 分别应用一组条件?

检查一周的日期是否位于两个特定日期之间 SQL ORACLE

SQL:查找一周中特定日期雇用的所有员工

SQL Server:获取一个月的第一周和第二周的日期范围

SQL - 创建一个查询,显示在特定时间跨度内登录次数最多的用户

我们如何识别两个SQL Server表之间的关系,一对一或其他关系.....?

像我们一周中的几天一样自动填充月份