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年以来的毫秒)。
timestamp
不起作用,我得到nullnum_rows而不是0,如果我使用
num_rows
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
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设置日期格式。
编辑2:
在MySQL UNIX中,时间是自纪元(1/1/70)起的秒数,因此,如果您的timestamp列包含毫秒数,则也必须除以1000。