如何通过unixstamp获取最近24小时的行数

时间:2010-10-05 14:26:04

标签: php sql

我有这个;

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

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

4 个答案:

答案 0 :(得分: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不是与时间相关的类型,而是类似varchar或int列,则必须在列上使用FROM_UNIXTIME或将上述查询调整为

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

答案 1 :(得分:7)

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

答案 2 :(得分:1)

您在过去24小时内在中寻找新用户,而不是完全 24小时。因此,您必须使用>(大于)运算符而不是=(等于)。

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

顺便说一下,PHP有一个等同于MySQL UNIX_TIMESTAMP()函数的函数:time();

答案 3 :(得分:0)

您必须将timestamp文件转换为日期才能进行比较。

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