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分钟间隔内”完全是不真实的。