检查它是否在24小时内发生

时间:2012-08-14 09:09:04

标签: php mysql date

想象一下,我们让用户能够使用我们的网站发送电子邮件,但我们希望限制他们每天不要发送超过30封电子邮件(24小时)。

因此,通过发送每封电子邮件,我们将在我们的表格中插入记录,然后当他/她想要发送另一封电子邮件时,我们会检查他是否在24小时内发送了30多封电子邮件。

我们如何用PHP检查?

我们查询db,我们为这个用户获得了20条记录,记录的日期是:

2012-08-14 13:10:58
2012-08-14 12:45:47
2012-08-14 16:32:18
2012-08-14 19:10:40
...
...
...

我们如何才能实现这样的规则?

谢谢

1 个答案:

答案 0 :(得分:5)

不要在PHP中检查它,使用这样的简单查询来直接从数据库中获取答案。

select 
    count(*) 
from 
    yourTableName 
where 
    dateCol>date_sub(now(), interval 1 day) 
    and userID=...

这会给你计算。

编辑:正如鲍里斯指出的那样,这将计算每天,您可以更改它以检查最后24小时的时间段如下:

select 
    count(*) 
from 
    yourTableName 
where 
    dateCol>date_sub(now(), interval 24 hour) 
    and userID=...

编辑2:在检查之后,Riad正确地指出,这两个确实返回相同的值。 1 day被视为1天,而不是日历日期。如果日期列的日期时间为“2012-08-13:13:00:00”,则date_sub( dateCol, interval 1 day)将返回“2012-08-12:13:00:00”。