将数据库时间戳与当前时间进行比较

时间:2019-03-25 15:11:33

标签: mysql sql

我在MySQL数据库中有许多记录,其中的一个字段跟踪记录创建的时间。类型为“时间戳”,默认设置为CURRENT_TIMESTAMP。我正在尝试访问所有早于5分钟的记录。我在PHP页面中使用了以下查询:

SELECT username FROM liveusers WHERE timejoined < NOW() - INTERVAL 5 MINUTE)

由于某种原因,它不会选择任何记录,而且我不确定如何纠正它。 PHP代码很好,因为如果删除条件,它将选择所有记录。我在做什么错了?

2 个答案:

答案 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                          |

View on DB Fiddle