在PHP / MySQL中的日期之间获得结果

时间:2016-09-15 13:22:53

标签: php mysql date datetime

我正在尝试从5到10分钟前添加的数据库中获取所有行。

以下是我的尝试:

$query9 = mysql_query("SELECT * FROM user_actions  WHERE timestamp BETWEEN date_sub(now(), interval 5 minute) AND date_sub(now(), interval 10 minute);"); 

$onlineUsersLast10Mins = mysql_num_rows($query9);

尽管数据库中的数据是从6,7,8和9分钟前完成的,但这个脚本并没有把它拿起来。我哪里错了?

对于信息,日期存储为通常格式的时间戳yyyy-mm-dd hh:mm:ss

2 个答案:

答案 0 :(得分:1)

在查询结尾处的分号需要删除最后一个双引号之前:

{
  "extends": "tslint:latest",
  "rules": {
    "object-literal-sort-keys": false
  }
}

这应该有用。

答案 1 :(得分:0)

让我们来看看BETWEEN's documentation

BETWEEN使用间隔,但如果你看看这个官方的例子:

  

的MySQL>选择2在1和3之间,2在3和1之间;

     

- > 1,0,

你会看到2在1和3之间,但是2不在3和1之间。所以,如果右边比左边大,就像在第二种情况下,其中3是左边,1是是的,那么你的元素就不会介于它们之间。

因此,2介于1和3之间,但2介于3和1之间。

让我们来看看你的问题:

SELECT * FROM user_actions  WHERE timestamp BETWEEN date_sub(now(), interval 5 minute) AND date_sub(now(), interval 10 minute);

左侧包含比现在早5分钟的时刻,右侧包含比现在早10分钟的时刻。因此,右侧实际上比左侧更早(更小)。我们需要看看我们是否在10分钟前和5分钟前有价值,而不是相反:)

所以,这应该是查询:

SELECT * FROM user_actions  WHERE timestamp BETWEEN date_sub(now(), interval 10 minute) AND date_sub(now(), interval 5 minute);