php - 如何显示仅在 3 小时前发布的结果
问题描述
我正在使用下面提到的代码通过 PHP 和 MySql 在 UITableView 中显示位置。我只需要显示仅在 3 小时之前发布的位置。正如我所说,这些位置由用户发布并列在 UITableView 中。
她是我的选择:
$query = sprintf("SELECT *,
( 6371 * acos(
cos(radians(%s)) * cos(radians(lati)) *
cos(radians(longi) - radians(%s)) +
sin(radians(%s)) * sin(radians(lati))
) ) AS distance
FROM `markers`
HAVING distance < 100
ORDER BY distance LIMIT 100",
mysql_real_escape_string($lati),
mysql_real_escape_string($longi),
mysql_real_escape_string($lati));
我的表有(日期和时间),有没有办法显示从当前时间开始 3 小时之前发布的位置。
解决方案
要查找最近的记录,请使用HAVING
时间戳INTERVAL # interval_units
列。
因此,在您提供“日期和时间”列的情况下post_timestamp
,查询将如下所示:
AND post_timestamp >= (NOW() - INTERVAL 3 HOUR)
因此,它采用带有时间戳的列,在此示例post_timestamp
中,其值大于或等于NOW()
或高达 previous INTERVAL 3 HOURS
。
更新完整查询:
SELECT *, post_timestamp,
( 6371 * acos(
cos(radians(%s)) * cos(radians(lati)) *
cos(radians(longi) - radians(%s)) +
sin(radians(%s)) * sin(radians(lati))
) ) AS distance
FROM `markers`
HAVING distance < 100
AND post_timestamp >= (NOW() - INTERVAL 3 HOUR)
ORDER BY distance LIMIT 100
推荐阅读
- python - 将 OpenCV 轮廓转换为直线和曲线
- javascript - 使用角度js根据字段的值在文本框和下拉菜单之间切换
- php - 迭代多维数组并检索单个值和数组值
- json - 模板正文包含无效的 JSON:无效字符
- exoplayer - 如何检测在 Exoplayer 中读取 DRM Widevine 许可证时出现错误
- reactjs - 处理 useEffect 和服务器端更改
- visual-studio-code - Visual Studio Code 找不到我的(本地)库文件
- django - 在 EB 上使用 Docker 部署 Django 失败和 502 badgateway
- python - 合并来自多个系列的转换数据帧
- javascript - 将数据(prop)从 _app.js 传递到页面中的 getServerSideProps - NextJS,最新版本