我想检查用户在过去一小时内在我的 MySQL 数据库中是否有 5 条记录。这就是我现在的做法:$link = mysqli_query($link, "SELECT * FROM find_points WHERE timestamp > '.time()-3600.' AND user_id = '1' ORDER BY id DESC");if(mysqli_num_rows($link) >= 5) { echo 'more than 5 results';}看起来它应该工作,但它不起作用......
2 回答
忽然笑
TA贡献1806条经验 获得超5个赞
请使用以下查询
SELECT * FROM find_points WHERE TIMESTAMPDIFF( hour, timestamp , now() ) > 1 AND user_id = '1' ORDER BY id DESC
您可以阅读有关TimestampDiff 的手册
它可用于以各种格式运行 2 个日期之间的差异。
请检查SqlFiddle上的Demo 它显示了 TimestampDiff 如何返回结果,您可以在 WHERE 子句中使用相同的结果。
更新
根据您的评论,时间戳存储为 Unix 时间戳,您可以使用以下查询:
SELECT * FROM find_points WHERE TIMESTAMPDIFF( hour, FROM_UNIXTIME(timestamp) , now() ) > 1 AND user_id = '1' ORDER BY id DESC
FROM_UNIXTIME将您的 UNIX 时间戳转换为日期时间格式。然后,您可以将其传递给TIMESTAMPDIFF它将计算差异并返回小时数。
希望这可以帮助。
BIG阳
TA贡献1859条经验 获得超6个赞
“SELECT * FROM find_points WHERE timestamp > DATE_ADD(NOW(), INTERVAL 1 HOUR) AND user_id = '1' ORDER BY id DESC”
- 2 回答
- 0 关注
- 241 浏览
添加回答
举报
0/150
提交
取消
