数据库 环境:MYSQL8
目的:在已有数据库中按照每小时抽取1条记录
数据库模型:DeviceColl
时间字段:create_time 时间戳
抽取字段:JSON字段,名称payload 提取内容 payload->T1
$collmodel = new DeviceColl();
$sqlstr="payload->'$.".$pararow['title']."'";
$colllist=$collmodel
->fieldRaw($sqlstr." AS coll,FROM_UNIXTIME(create_time,'%Y-%m-%d %H' ) AS time")
->where('clientid',$clientid)
->group('time')
->limit(12)
->select();
重点:1:、用到了fieldRaw方法:
官方介绍:
使用SQL函数
可以在fieldRaw方法中直接使用函数,例如:
Db::table('user')->fieldRaw('id,SUM(score)')->select();
执行的SQL相当于:
SELECT id,SUM(score) FROM user
2、fieldRaw方法JSON字段查询方法:
$sqlstr="payload->'$.".$pararow['title']."'";
参考
-- 查询记录
SELECT sname,JSON_EXTRACT(info,'$.age') FROM t_json;
SELECT sname,info->'$.age' FROM t_json;
-- 查询key
SELECT id,json_keys(info) FROM t_json;
复制代码
查询结果(可忽略,还有其他处理函数)
{"code":0,"msg":"payload->T1","data":["889"],"data2":["889"],"data3":["889"],"data4":["889"],"time":["2020-12-07 08"],"time2":[null],"time3":[null],"time4":[null]}