You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MariaDB按日期+时间范围查询无结果:筛选17点至次日8点非工作时段通话

问题原因

BETWEEN运算符要求左边界值必须小于等于右边界值才会返回匹配结果,而时间类型的17:00:00数值大于08:00:00,所以你写的时间过滤条件没有任何符合的记录,自然返回空结果。

修正方案

将跨天的非工作时段拆分为两个独立的时间区间,用OR关联即可,注意要给时间条件加括号避免和其他WHERE条件的逻辑优先级冲突。

修正后的完整SQL语句:

SELECT 
    MIN(CallDate) AS Week_Of, -- 原写法SELECT里的CallDate不在GROUP BY中,严格SQL模式会报错,这里用MIN取一周最早时间标识区间,你也可以根据业务调整聚合方式
    AgentName,
    COUNT(*) AS TOTAL_Calls,
    SUM(CASE WHEN Accepted = 'ANSWERED' THEN 1 ELSE 0 END) AS Answered,
    SUM(CASE WHEN Accepted = 'NO ANSWER' THEN 1 ELSE 0 END) AS NoAnswer
FROM jshou_custom.afterhours
WHERE 
    CallDate >= DATE_ADD(NOW(), INTERVAL -1 WEEK) 
    AND (
        TIME(CallDate) >= '17:00:00' 
        OR TIME(CallDate) <= '08:00:00'
    )
GROUP BY AgentName

补充说明:

如果你想用HOUR函数实现也可以,把时间过滤条件替换为如下写法即可,逻辑一致:

AND (HOUR(CallDate) >= 17 OR HOUR(CallDate) < 8)

如果你的非工作时段边界需要精确到时分秒,优先用TIME函数的写法;仅按小时筛选时用HOUR函数更简洁。


内容的提问来源于stack exchange,提问作者Blukraken

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 11:45:00