繁体   English   中英

无法获得两个时间戳之间的差异

[英]Cannot get difference between two timestamps

我想返回相差少于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();

您的代码有两个问题。 首先,由于count() ,您将使用隐式组将所有记录缩减为1条记录-然后通过num_rows()返回返回的记录数。

第二个问题是,您将获得表中的每条记录,其中上一次登录将在未来30分钟以内...它将始终是每一行。

echo date('H:i') . "\n" . date('H:i', strtotime('+30 minutes'));

产量:

16:38
17:08

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM