我正在尝试从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
答案 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);