需求描述:数据是每十分钟写入一次(数据已存在),现在新需求是只展示时间间隔为两个小时的数据, 也就说24小时取12条数据
表结构CREATE TABLE lara_realdata
(id
int(11) NOT NULL AUTO_INCREMENT,equipment_id
varchar(255) DEFAULT NULL COMMENT '设备编号',collection_time
int(11) DEFAULT NULL COMMENT '采集时间',instan_flow
varchar(11) DEFAULT NULL COMMENT '瞬时流量',
PRIMARY KEY (id
) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC;
添加语句
INSERT INTO laracms
.lara_realdata
( equipment_id
, collection_time
, instan_flow
) VALUES ('00000829', 1543466428, '0.06');
INSERT INTO laracms
.lara_realdata
(equipment_id
, collection_time
, instan_flow
) VALUES ('00000652', 1543466802, '0.52');
INSERT INTO laracms
.lara_realdata
(equipment_id
, collection_time
, instan_flow
) VALUES ('00000652', 1543466879, '0.16');
INSERT INTO laracms
.lara_realdata
( equipment_id
, collection_time
, instan_flow
) VALUES ('00000829', 1543466428, '0.06');
INSERT INTO laracms
.lara_realdata
(equipment_id
, collection_time
, instan_flow
) VALUES ('00000652', 1543466802, '0.52');
INSERT INTO laracms
.lara_realdata
(equipment_id
, collection_time
, instan_flow
) VALUES ('00000652', 1543466879, '0.16');
拿到当前时间两小时前的时间戳,数据库存入时间戳大于等于拿到的时间戳
select * from lara_realdata where collection_time >='当天0点时间戳' and collection_time<'第二天天0点时间戳'
and (collection_time-(select min(collection_time) from lara_realdata where collection_time >='当天0点时间戳' and collection_time<'第二天天0点时间戳' ))/7200=0
先获取当天最早的那条记录的时间,然后用(当天每条记录的时间-最早的记录)/7200秒=0 ,符合条件的都是,可能有多条,可能一条都没有,毕竟你用的是int时间戳,可以在这个基础上 (当天每条记录的时间-最早的记录)/7200秒 取据对值最小的那条
你这个问题描述的,时间间隔两小时的数据,是什么时间间隔啊?是按照时间排序,间隔两小时还是说同一个设备数据间隔两小时啊?问题都描述不清楚...