Javascript SQL选择值的倍数

Javascript SQL选择值的倍数,javascript,php,mysql,sql,json,Javascript,Php,Mysql,Sql,Json,我需要生成一个烛台图,并需要转换这个表 amount created_at updated_at 258 2019-10-17 01:45:17 2019-10-17 01:45:17 186 2019-10-17 01:45:17 2019-10-17 01:45:17 122 2019-10-17 01:46:31 2019-10-17 01:46:31 092 2019-10-17 01:46:31

我需要生成一个烛台图,并需要转换这个表

amount  created_at              updated_at
258     2019-10-17 01:45:17     2019-10-17 01:45:17
186     2019-10-17 01:45:17     2019-10-17 01:45:17
122     2019-10-17 01:46:31     2019-10-17 01:46:31
092     2019-10-17 01:46:31     2019-10-17 01:46:31
086     2019-10-17 01:47:47     2019-10-17 01:47:47
172     2019-10-17 01:47:47     2019-10-17 01:47:47
指向下面的json对象

[
    { time: '2019-10-17 01:45:17', open: 180, high: 180, low: 178, close: 179 },
    { time: '2019-10-17 01:46:17', open: 180, high: 181, low: 177, close: 178 },
    { time: '2019-10-17 01:47:17', open: 175, high: 179, low: 175, close: 178 },
]
我正在使用PHP编写代码,我不介意有一个可以做同样事情的PHP代码。 请注意,从表中的第一条记录开始,每次间隔为5分钟

编辑: 生成的json值包括从更新的_at列中获取的
time
open
是从间隔量中获取的第一个数据,
high
是间隔量的最高值,
low
是区间的最低值,最后是
close
是区间的最后一个数据。 如果只有一个数据,则应将其用作打开、关闭、高和低。 本图中的所有json值都是任意数字

我曾尝试使用PHP中的
strotime()
将每个时间戳转换为unix时间戳,然后循环遍历这些值,如果满足如下所示的条件,则将该值推送到数组中

$tnow = 0;
$time = 60;
$interval = 0;
$y = [];
$z = [];
$array = [];
foreach ($db as $key => $value) {
    if($key == 0){
        $tnow = strtotime($value['updated_at']);
    }

    if(strtotime($value['updated_at']) <= $tnow){
        array_push($z, $value['amount']);
    }
    else{
        $array = sort($z);
        $cc = count($z)-1;
        array_push($z, $z[0]);
        array_push($z, $array[$cc]);
        array_push($z, $array[0]);
        array_push($z, $z[$cc]);

        array_push($y, $z);
        $z = [];
        $tnow = ($tnow+60);
        continue;
    }
}
$tnow=0;
$time=60;
$interval=0;
$y=[];
$z=[];
$array=[];
foreach($db as$key=>$value){
如果($key==0){
$tnow=strotime($value['updated_at']);
}

如果(strotime($value['updated_at'])通过按时间对数据进行排序,您可以按分钟分组(只取ISO字符串的一部分),并将第一个值用作打开值,将每个值用作结束值。要获取高值和低值,可以取最大值或最小值

var数据=[{金额:258,更新时间:2019-10-17 01:45:17},{金额:186,更新时间:2019-10-17 01:45:17},{金额:122,更新时间:2019-10-17 01:46:31},{金额:92,更新时间:2019-10-17 01:46:31},{金额:86,更新时间:2019-10-17 01:47:47},金额:172,更新时间:2019-10-17:47},
结果=Object.values(data.reduce((r,{amount,updated_at})=>{
var时间=在切片(0,16)处更新的时间;
如果(!r[time])r[time]={time,打开:数量,高:-无限,低:无限};
r[time].high=Math.max(r[time].high,amount);
r[time].low=Math.min(r[time].low,amount);
r[时间]。关闭=金额;
返回r;
}, {}));
console.log(结果);

.as控制台包装{最大高度:100%!重要;顶部:0;}
到目前为止,您做了哪些工作?json对象中总结了哪些内容以及如何做?Newdays大多数数据库引擎都支持将json对象存储在单元格中并围绕其进行查询什么是数量和数量?您尝试了什么?您如何从给定的数据中获得所需的结果?为什么结果中有分钟而不是五分钟数据仅仅是一种产品吗?为什么id、userid、orderid很重要?很难看出您是如何从该数据集中得出该结果的,您的断言“每次都是从表中第一条记录开始的5分钟间隔内”完全是不真实的。