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]}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值