簡體   English   中英

如何通過unixstamp獲取最近24小時的行

[英]How do I get rows for last 24 hours by unixstamp

我有這個;

$long = "86400";
$query = "SELECT * FROM users WHERE unixdate = UNIX_TIMESTAMP()-$long 
          ORDER BY unixdate DESC";

但這是行不通的。 我想在24小時內向所有新用戶展示

您可以使用以下命令在MySQL中完全執行該查詢

SELECT col1, col2, otherCols
    FROM yourTable 
    WHERE timestamp_col > (NOW() - INTERVAL 24 HOUR)

表達式(NOW() - INTERVAL 24 HOUR)返回24小時前的日期。 MySql很聰明,可以處理與時間相關的列類型之間的比較。

如果timestamp_col不是與時間相關的類型,而是類似varchar或int列的類型,則必須在該列上使用FROM_UNIXTIME或調整上面的查詢以讀取

SELECT col1, col2, otherCols
    FROM yourTable 
    WHERE timestamp_col > UNIX_TIMESTAMP( NOW() - INTERVAL 24 HOUR )

請參見MySql手冊中的DATE_SUB和DATE_ADD

使用>而不是= 目前,您正在查詢幾乎不匹配的特定時間創建的條目。

您正在尋找的最后24小時,不完全是 24小時新用戶。 因此,您必須使用> (大於)運算符而不是= (等於)。

$long = "86400";
$query = "SELECT * FROM users WHERE unixdate > UNIX_TIMESTAMP()-$long ORDER BY unixdate DESC";

順便說一下,PHP具有與MySQL UNIX_TIMESTAMP()函數等效的函數: time() ;

您必須將timestamp文件轉換為日期才能進行比較。

SELECT * FROM table WHERE (from_unixtime(unixdate) >= NOW() - INTERVAL 1 DAY)

暫無
暫無

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

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