在MYSQL中以这种格式在日期之间搜索03/17 / 10.11:22:45

时间:2010-03-17 15:48:14

标签: php mysql datetime

我有一个脚本,每小时自动用数据填充一个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了几个数字。我也试过没有介于两者之间的函数,并使用> =< =来拉取记录,但结果相同。我确信这是一个疏忽,提前谢谢。

2 个答案:

答案 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';