我有这个;
$long = "86400";
$query = "SELECT * FROM users WHERE unixdate = UNIX_TIMESTAMP()-$long
ORDER BY unixdate DESC";
但它不起作用。我想在24小时内向所有新用户显示
答案 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 )
答案 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)