mysql之间喜欢和喜欢之间的查询错误我收到了错误

时间:2014-08-28 14:59:09

标签: php mysql sql

我有一个数据库,我希望得到日​​期。我的代码是

SELECT * FROM `cdr`  
WHERE  BETWEEN calldate LIKE '2014-08-28%' 
AND LIKE '2014-08-27%'

但不起作用......

我试过了:

SELECT * FROM `cdr`  
WHERE  BETWEEN calldate '2014-08-28% 
AND '2014-08-27'

但没有奏效,因为该栏目是y.m.d - h.m.s

有人帮助我吗?感谢

4 个答案:

答案 0 :(得分:2)

您可以通过提供硬编码时间开始/结束值

Sargable way中编写查询
SELECT * FROM `cdr`  
where  calldate between '2014-08-27 00:00:00' and '2014-08-28 11:59:59' 

答案 1 :(得分:0)

where foo between bar and baz相当于

WHERE (foo >= bar) AND (foo <= baz)

从未有过,也永远不会有能力进行LIKE比较。您可以 NOT 使您的查询无法工作。

同样,你正试图向后做。它是foo BETWEEN lower_value AND higher_value

你需要的只是

WHERE calldate BETWEEN '2014-08-27' AND '2014-08-28'

答案 2 :(得分:0)

我建议在日期避免使用between,尤其是在有时间值时。这是一种方法:

SELECT *
FROM `cdr`  
WHERE calldate >= date('2014-08-27') and
      calldate < date('2014-08-27') + interval 1 day;

所有函数都在常量上,因此该查询可以使用cdr(calldate)上的索引。

答案 3 :(得分:0)

试试这个:

SELECT * FROM `cdr` WHERE `calldate` BETWEEN '2014-08-09%' AND '2014-08-10%'
  

注意:BETWEEN的第1个字符串应该小于第2个字符串。