0
 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 < $currenttimeminus30 .last_updated 是否是室外表中的字段并且它是时间类型。last_updated 值就像 13:05:11

4

2 回答 2

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:选择 API指南和相关的常见问题解答以获取更多信息。此功能的替代方案包括:

mysqli_query()

PDO::查询()

于 2013-04-15T10:19:46.000 回答
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) )";
于 2013-04-15T10:06:16.343 回答