我想返回相差少于30分钟的日期数。这些是存储在数据库中的记录:
id | last_login
0 2019-02-11 17:22:47
1 0000-00-00 00:00:00
2 2019-02-11 17:22:03
3 0000-00-00 00:00:00
4 0000-00-00 00:00:00
查询结果应为2,但得到1:
$time = strtotime('+30 minutes');
return $this->db->select('COUNT(last_login) AS users_online')
->from('login')
->where('UNIX_TIMESTAMP(last_login) < ' . $time)
->get()->num_rows();
答案 0 :(得分:0)
这里的代码有两个问题。首先,由于/path/to/your/files/
,您将所有数据减少为带有隐式组的1条记录-然后获取通过count()
返回的记录数。
第二个问题是,您将获得表中的每条记录,该记录的未来记录将在30分钟以内...永远都是每一行。
num_rows()
收益:
echo date('H:i') . "\n" . date('H:i', strtotime('+30 minutes'));