簡體   English   中英

查詢時間戳列早於 X 小時的數據庫行

[英]Query database rows where timestamp column is older than X hours

我在 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" );

什么是有效實施這一點的好選擇?

我只想查詢時間戳超過 3 小時的行

不需要特定的應用程序代碼。 MySQL 理解日期算術:

WHERE last_update > NOW() - INTERVAL 3 HOUR

像這樣的東西?

$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)
);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM