我在MySQL数据库中有许多记录,其中的一个字段跟踪记录创建的时间。类型为“时间戳”,默认设置为CURRENT_TIMESTAMP。我正在尝试访问所有早于5分钟的记录。我在PHP页面中使用了以下查询:
SELECT username FROM liveusers WHERE timejoined < NOW() - INTERVAL 5 MINUTE)
由于某种原因,它不会选择任何记录,而且我不确定如何纠正它。 PHP代码很好,因为如果删除条件,它将选择所有记录。我在做什么错了?
答案 0 :(得分:0)
我建议您使用DATE_SUB:
SELECT username FROM liveusers WHERE timejoined > DATE_SUB(NOW(),INTERVAL 5 MINUTE);
https://www.w3schools.com/sql/func_mysql_date_sub.asp
您正在以另一种方式进行比较。较新的记录应具有比5分钟前更大的日期。
答案 1 :(得分:0)
首先,您要比较时间戳和日期。您想首先进行日期转换,例如,使用const appRoutes: Routes = [
{ path: 'recipes', component: RecipesComponent, children: [
{ path: ':id', component: RecipeDetailComponent },
{ path: '', component: RecipeStartComponent },
] }, //add the rest......
5分钟是300秒。假设某人以50岁加入,而UNIX_TIMESTAMP()
是301(应该是“ <较新” )。 NOW()
将变为-> WHERE timejoined < UNIX_TIMESTAMP(NOW() - INTERVAL 5 MINUTE)
<-假
您要写:
WHERE 50 < 301 - 300
模式(MySQL v5.7)
查询#1
WHERE timejoined > UNIX_TIMESTAMP(NOW() - INTERVAL 5 MINUTE)
查询#2
SELECT UNIX_TIMESTAMP(NOW() - INTERVAL 4 MINUTE) > UNIX_TIMESTAMP(NOW() - INTERVAL 5 MINUTE) AS "is 4 minutes ago \"newer\" ?";
| is 4 minutes ago "newer" ? |
| -------------------------- |
| 1 |