$long = "86400";
$query = "SELECT * FROM users WHERE unixdate = UNIX_TIMESTAMP()-$long
ORDER BY unixdate DESC";
但它不起作用。我想在24小时内显示所有新用户
$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足够聪明,可以处理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)
使用>
而不是=
。目前,您正在查询在某个第二个创建的条目,这几乎不会匹配。
您正在寻找新用户最近24小时内,并非正好 24h。所以你必须使用>
(大于)运算符而不是=
(等于)。
$long = "86400";
$query = "SELECT * FROM users WHERE unixdate > UNIX_TIMESTAMP()-$long ORDER BY unixdate DESC";
顺便说一句,PHP具有等同于MySQL的UNIX_TIMESTAMP()
功能的函数:time()
;
86400每年不会准确两次(从夏令时转入和转出)。您可以使用一些MySQL日期函数来减去1天,让MySQL担心秒数。 – Pickle 2010-10-05 14:45:01
如何做到这一点?.. – Johnson 2010-10-05 14:48:37