为了账号安全,请及时绑定邮箱和手机立即绑定

查询时间戳列早于 X 小时的数据库行

查询时间戳列早于 X 小时的数据库行

PHP
一只甜甜圈 2022-10-14 10:09:36
我在 MySQL 数据库表中有一堆行,最后一次修改时记录了last_update (TIMESTAMP) 字段。截至目前,我每 300 秒循环遍历所有行并检查是否已经过去了 3 多个小时,如果是,则更新该行。    $update_delay = 180;    $table_name = $wpdb->prefix . "products";    $results = $wpdb->get_results( "SELECT id, prod_id, last_update FROM $table_name" );    foreach ($results as $result)    {        $last_update = $result->last_update;        if (time() - strtotime($last_update) > $update_delay * 60)        {由于这效率低下,我想只查询时间戳超过 3 小时的行。由于该字段的格式为“2020-03-01 23:22:06”,我想我可以执行以下操作,但不确定是否可以在查询中使用 INTERVAL 执行此操作,或者是否可以检查日期反对应该在PHP中。$old_timestamp = date('Y-m-d G:i:s') . "- 3 hours";$results = $wpdb->get_results( "SELECT id, prod_id FROM $table_name WHERE last_update > $old_timestamp" );什么是有效实施这一点的好选择?
查看完整描述

2 回答

?
鸿蒙传说

TA贡献1865条经验 获得超7个赞

我想只查询时间戳超过 3 小时的行

无需特定的应用程序代码。MySQL 理解日期算术:

WHERE last_update > NOW() - INTERVAL 3 HOUR


查看完整回答
反对 回复 2022-10-14
?
交互式爱情

TA贡献1712条经验 获得超3个赞

像这样的东西?


$old_timestamp = date('Y-m-d G:i:s');

$results = $wpdb->get_results( 

    "SELECT id, prod_id FROM $table_name WHERE last_update > date_add($old_timestamp") -3 hours)

);


查看完整回答
反对 回复 2022-10-14
  • 2 回答
  • 0 关注
  • 108 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号