我试图获取过去5分钟内的所有记录,但是没有返回任何内容...
SELECT * FROM (`user_actions`) WHERE `IP` = '127.0.0.1' AND `type` = 'Failed Login' AND date =DATE_SUB(NOW(), INTERVAL 5 MINUTE)
我试图获取过去5分钟内的所有记录,但是没有返回任何内容...
SELECT * FROM (`user_actions`) WHERE `IP` = '127.0.0.1' AND `type` = 'Failed Login' AND date =DATE_SUB(NOW(), INTERVAL 5 MINUTE)
应该使用date >
而不是date =
,这只会匹配刚好等于5分钟前的时间的行。
举个例子,如果现在是下午12:30,要查找过去5分钟内的行,你需要筛选所有时间大于下午12:25的行。仅查询时间等于下午12:25的行将无法获取记录于下午12:26、12:27等时间的行。
SELECT * FROM user_actions WHERE IP = '127.0.0.1' AND type = 'Failed Login' AND date > DATE_SUB(NOW(), INTERVAL 5 MINUTE)
返回空值是因为你所查询的内容没有结果……即恰好5分钟之前的日期。
在使用DATE
时,不应该使用=
运算符,而应该使用不等式。
也就是说,你需要查询大于5分钟前的日期。