2010-10-05 76 views
1

我有这个;我如何获得最近24小时的行unixstamp

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

但它不起作用。我想在24小时内显示所有新用户

+2

86400每年不会准确两次(从夏令时转入和转出)。您可以使用一些MySQL日期函数来减去1天,让MySQL担心秒数。 – Pickle 2010-10-05 14:45:01

+0

如何做到这一点?.. – Johnson 2010-10-05 14:48:37

回答

13

您可以完全做到这一点查询在MySQL与

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

(NOW() - INTERVAL 24 HOUR) 24小时之前返回日期的表达。 MySql足够聪明,可以处理Time related column types之间的比较。

如果timestamp_col是不相关类型一段时间,但像你必须对列使用FROM_UNIXTIME或调整上述查询VARCHAR或INT列读取

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

See DATE_SUB and DATE_ADD in the MySql Manual

7

使用>而不是=。目前,您正在查询在某个第二个创建的条目,这几乎不会匹配。

1

您正在寻找新用户最近24小时内,并非正好 24h。所以你必须使用>(大于)运算符而不是=(等于)。

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

顺便说一句,PHP具有等同于MySQL的UNIX_TIMESTAMP()功能的函数:time();

相关问题