比较数据库的时间和使用date()函数检索的当前时间

时间:2013-04-15 10:01:48

标签: php mysql

 date_default_timezone_set('Asia/Calcutta');

$currenttimeminus30=date('H:i:s', strtotime("-30 minutes"));


 $query1=mysql_query("select * from outdoor where latitude='$latitude%' && longitude='$longitude%' && user_id='$userid' && last_updated<$currenttimeminus30");

我需要比较last_updated&lt; $ currenttimeminus30 .last_updated是户外表中的一个字段,它的类型为time。 last_updated值如13:05:11

2 个答案:

答案 0 :(得分:1)

您可以使用TIME()功能:

SELECT * 
FROM outdoor 
WHERE latitude = '$latitude%' 
AND longitude = '$longitude%' 
AND user_id = '$userid' 
AND last_updated < TIME($currenttimeminus30)

如果您不使用不同的时区,则不希望使用PHP创建时间。您只能使用INTERVAL

SELECT * 
FROM outdoor 
WHERE latitude = '$latitude%' 
AND longitude = '$longitude%' 
AND user_id = '$userid' 
AND last_updated < TIME( NOW() - INTERVAL 30 MINUTE )

注意:

最好使用datetime作为字段类型。在您的情况下,如果记录不是在今天更新,而是在几天,几个月,几年等之前更新,您可能会得到错误的结果。

请不要使用mysql_query因为已弃用

  

自PHP 5.5.0起,此扩展程序已弃用,并将在中删除   未来。相反,应使用MySQLiPDO_MySQL扩展名。   另请参阅MySQL: choosing an API指南和related FAQ了解更多信息   信息。该功能的替代方案包括:

     

mysqli_query()

     

PDO::query()

答案 1 :(得分:0)

更好地使用mysql的INTERVAL

last_updated < time ( now() - INTERVAL 30 MINUTE )

这里:

$query1=mysql_query("select * from outdoor where latitude='$latitude%' and longitude='$longitude%' and user_id='$userid' and last_updated < time ( now() - INTERVAL 30 MINUTE) )";