THINKPHP6间隔时间查询数据

数据库 环境: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]}

猜你喜欢

转载自blog.csdn.net/taogunet/article/details/110996690
今日推荐