我想返回的有差异不到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();
有两个问题与您的代码在这里。首先,是要切断一切下降到1个纪录隐性组感谢count()
- 然后得到的通过num_rows()
返回的记录数。
第二个问题是你得到的每一个记录的表,其中最后一次登录是在未来不到30分钟......这将永远是每一行。
echo date('H:i') . "\n" . date('H:i', strtotime('+30 minutes'));
产量:
16:38
17:08