Iam试图找出在5分钟内将数据保存到数据库中。
SELECT COUNT(id), DATE_FORMAT(`timestamp`, '%Y-%m-%d %H:%i')
FROM `table`
WHERE `timestamp` >= CURRENT_TIMESTAMP - INTERVAL 5 MINUTE
timestamp
是一个unix时间戳(1970年以来的毫秒数)。
不起作用,我得到null num_rows
而不是0,如果我使用
if (!isset($resultHistory->num_rows) || !$resultHistory->num_rows)
要做动作,代码不会进入循环..
我也试过
SELECT COUNT(id), DATE_FORMAT(`timestamp`, '%Y-%m-%d %H:%i')
FROM `table`
WHERE DATE_FORMAT(`timestamp`, '%Y-%m-%d %H:%i') >= CURRENT_TIMESTAMP - INTERVAL 5 MINUTE
答案 0 :(得分:3)
Current_timestamp将当前日期作为SQL TIMESTAMP返回,而不是UNIX时间戳,因此您必须使用unix_timestamp函数进行转换:
SELECT COUNT(id), from_unixtime(`timestamp` / 1000, '%Y-%m-%d %H:%i')
FROM `table`
WHERE `timestamp` >= unix_timestamp(CURRENT_TIMESTAMP - INTERVAL 5 MINUTE) * 1000
编辑:
由于您的timestamp
列包含unix时间,因此您还必须使用from_unixtime格式化日期。
EDIT2:
在MySQL中,UNIX时间是自纪元(1/1/70)以来的秒数,因此如果您的timestamp
列包含毫秒数,则还必须除以1000。
答案 1 :(得分:2)
你可以这样做:
SELECT COUNT(id), DATE_FORMAT(`timestamp`, '%Y-%m-%d %H:%i')
FROM `table`
WHERE `timestamp` BETWEEN (DATE_SUB(NOW(),INTERVAL 5 MINUTE)) AND NOW()