Php MySql按距离和时间查询

Php MySql按距离和时间查询,mysql,Mysql,我有一个要添加时间搜索的查询 以下是我的工作查询: $query = "SELECT *,(((acos(sin((".$lat."*pi()/180)) * sin((Lat*pi()/180)) + cos((".$lat."*pi()/180)) * cos((Lat*pi()/180)) * cos(((".$lon."- Lon) * pi()/180))))*180/pi())*60*1.1515) as distance FROM items HAVING distance

我有一个要添加时间搜索的查询

以下是我的工作查询:

$query = "SELECT *,(((acos(sin((".$lat."*pi()/180)) * sin((Lat*pi()/180)) + 
cos((".$lat."*pi()/180)) * cos((Lat*pi()/180)) * cos(((".$lon."- Lon) * 
pi()/180))))*180/pi())*60*1.1515) as distance 
FROM items 
HAVING distance < ".$distance." 
ORDER BY distance 
LIMIT ".$min." , ".$max."";

几个小时以来,我一直在尝试我能想到的所有组合,但运气不佳。我打赌这也很简单,我会摇头的。提前感谢。

我建议您对此使用嵌套查询,如下所示

 SELECT *, big_cosine_law_distance_formula AS distance
   FROM (
     SELECT *
       FROM items
      WHERE items.timestamp > ".$somePastDate."
    ) AS i
 HAVING distance < ".$distance."

当您从该查询中获得可靠结果时,请添加外部结果。

那么问题出在哪里
WHERE now()>'2014-01-01'
效果很好……哦,对不起,时间戳是我自己命名和更新的列,不是由mysql自动更新的。如果它是msyql日期/日期时间字段,那么就用它的名称而不是
now()
。谢谢,我喜欢不为每个人计算的想法。现在试着让它工作,但没有任何项目显示仍然是的,我只是在做,我必须有一个问题,我的时间变量,即使它的回声正确。基本上,我不想显示超过31天的项目,所以它总是离当前时间31天。MySql在我为过去制作的时间戳的H:I:s部分上有错误。我删除了它,它现在显示的项目,但并没有限制他们实际上由日期是我的问题,小时分钟和秒。我无法在timestamp变量中使用它们获得任何输出,并且当它被删除时,我没有得到任何限制。但我真的很喜欢你的答案,并且会比我预期的更好,当我最终发现这个H:I:s部分OUTEN时,即使它不起作用,但仍然显示所有SELECT*FROM项目,其中DATE_SUB(CURDATE(),INTERVAL 31 DAY)
 SELECT *, big_cosine_law_distance_formula AS distance
   FROM (
     SELECT *
       FROM items
      WHERE items.timestamp > ".$somePastDate."
    ) AS i
 HAVING distance < ".$distance."
      SELECT *
       FROM items
      WHERE items.timestamp > ".$somePastDate."