我有一个脚本,每小时自动用数据填充一个mysql数据库。它填充日期字段,如03/17 / 10.12:34:11,依此类推。
我正在努力从搜索脚本中提取基于1天的数据。
如果我使用
SELECT *
FROM call_logs
WHERE call_initiated between '03/17/10.12:00:00' and '03/17/10.13:00:00'
它可以工作,但是当我尝试添加其余的搜索参数时,它会忽略call_initiated字段。
SELECT *
FROM call_logs
WHERE caller_dn = '2x9xxx0000' OR called_dn = '2x9xxx0000'
AND call_initiated between '03/17/10.12:00:00' and '03/17/10.13:00:00'
^ - 我x了几个数字。我也试过没有介于两者之间的函数,并使用> =< =来拉取记录,但结果相同。我确信这是一个疏忽,提前谢谢。
答案 0 :(得分:3)
尝试在OR语句周围使用括号 ...其中(caller_dn ='2x9xxx0000'或called_dn ='2x9xxx0000')和'03 / 17/10.12:00:00'和'03 /17/10.13:00:00'
使用IN运算符代替OR ...其中caller_dn IN('2x9xxx0000','2y9yyyyy')和'03 / 17/10.12:00:00'和'03 /17/10.13:00:00'之间的call_initiated
答案 1 :(得分:2)
OR语句很可能是问题,因为OR评估左侧,看到它是真的,它不关心在正确的站点上是什么,因为只要其中一个语句是真的,它就算了整个陈述是真实的。
阅读OR运算符at the MYSQL page
您的陈述应该是
SELECT * FROM `call_logs` WHERE (caller_dn='2x9xxx0000' OR called_dn='2x9xxx0000') AND call_initiated BETWEEN '03/17/10.12:00:00' and '03/17/10.13:00:00';