我使用highstock库来显示磁力计的输出数据,但我有一点问题。我将数据存储在bd中的两个字段中。 第一个值是保存数据的日期时间,第二个值是传感器值:
2015-06-10 01:29:43 | 15
但是因为传感器在一秒钟内发送了多个值,我需要将此时间转换为UNIX,以增量方式
让我们假设它是原始数据:
2015-06-10 01:29:43 | 15
2015-06-10 01:29:43 | 16
2015-06-10 01:29:43 | 40
2015-06-10 01:29:43 | 50
2015-06-10 01:29:43 | 15
2015-06-10 01:29:43 | 11
我将其转换为时间戳:
1444094983 | 15
1444094983 | 16
1444094983 | 40
1444094983 | 50
1444094983 | 15
1444094983 | 11
最后一步是将此时间转换为毫秒。这不是问题。问题是,我需要每一秒重复一次,必须像这样增量毫秒
1444094983001 | 15
1444094983002 | 16
1444094983003 | 40
1444094983004 | 50
1444094983005 | 15
1444094983006 | 11
但是当新的秒开始时,必须重新开始增量编号并再次从0开始。
我正在使用php,这将是我解决问题的方法
$i = 1;
foreach ($row as $result){
$row['data_logged'] * 1000 + $i; // assuming I converted it in mysql with UNIX_TIMESTAMP
if($prev_data != $row['data_logged']) $i = 1;
$prev_data = $row['data_logged'];
$i++;
}
有更好/最简单的方法吗?
答案 0 :(得分:0)
基于讨论的替代设计方案:
MySQL中有一个自动增量选项,此选项注意每个插入的记录都有一个唯一键。使用该选项,可以存储数据,而无需在php中使用备用代码:
CREATE TABLE magnoMeterData(
mmdata_id INT NOT NULL AUTO_INCREMENT,
mmrecordtime TIMESTAMP,
value DOUBLE
) ENGINE=InnoDB ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=4K;
在此表中插入数据会产生如下记录:
1,1444094983001,{您的测量值}
2,1444094983002,{另一个测量值} 等
所以钥匙让它独一无二。该密钥在您的数据中也没有其他功能,以保持其唯一性并在其上运行订单。