此查询存在一些问题。
从晚上10点到早上8点(从2200(夜晚)到0800(早上))
此查询无效。我知道日期在24:00后发生了变化,我认为这是查询无效的原因。
SELECT date(callDate) AS dates,
sum(calltype = 'MISSED') AS missedCall,
sum(callType = 'INCOMING') AS incomingCall,
sum(callType = 'OUTGOING') AS outgoingCall
FROM tbl_call_details
WHERE userId = '1' AND
date(callDate) BETWEEN '2014-04-01' AND '2014-04-31' AND
time(callDate) > '22:00' AND time(callDate) < '08:00'
GROUP BY date(callDate)
ORDER BY date(callDate) ASC
也试过以下但这也不适合我。
SELECT * FROM tbl_call_details
WHERE userId = '1' AND
date(callDate) BETWEEN '2014-04-01' AND '2014-04-31' AND
time(callDate) > '22:00' AND
time(callDate) < '08:00'
我想使用select query在2200-0800之间获得结果。如果有任何想法,请指导我。
这项工作非常顺利,因为我已在同一天添加了0800-2200。
SELECT date(callDate) AS dates,
sum(calltype = 'MISSED') AS missedCall,
sum(callType = 'INCOMING') AS incomingCall,
sum(callType = 'OUTGOING') AS outgoingCall
FROM tbl_call_details
WHERE userId = '1' AND
date(callDate) BETWEEN '2014-04-01' AND '2014-04-31' AND
time(callDate) > '08:00' AND time(callDate) < '22:00'
GROUP BY date(callDate)
ORDER BY date(callDate) ASC
输出: -
dates missedCall incomingCall outgoingCall
2014-04-01 0 5 22
答案 0 :(得分:1)
您应该使用OR
条件,您的查询会尝试选择时间早于上午8点以及下午22点之后的数据,这是不可能的。注意你需要添加括号,如果你不添加它们,结果会有所不同(试试你的):
SELECT date(callDate) AS dates, sum(calltype = 'MISSED') AS missedCall, sum(callType = 'INCOMING') AS incomingCall, sum(callType = 'OUTGOING') AS outgoingCall
FROM tbl_call_details
WHERE userId = '1' AND date(callDate) BETWEEN '2014-04-01' AND '2014-04-31'
AND (time(callDate) > '22:00' OR time(callDate) < '08:00')
GROUP BY date(callDate) ORDER BY date(callDate) ASC