我有一个数据库表,如下所示:
id|start_date|end_date|sec
1|2018-08-01|2018-08-03|2500
2|2018-08-02|2018-08-13|100
3|2018-08-01|2018-08-05|500
所以我想明智地显示报告日期,以便用户可以知道特定日期有多少秒。
例如,我需要以下物品:
Date /Day total
2018-08-01 (2500+500)=3000 //this date comes in 1&3 records
2018-08-02 (2500+100+500)=3100 //this date comes in all 1,2,&3 records
2018-08-03 (2500+100+500)=3100 //this date comes in all 1,2,&3 records
2018-08-04 (100+500)=600 //this date comes in 2&3 records
2018-08-05 (100+500)=600 //this date comes in 2&3 records
2018-08-06 (100)=100 //this date comes in 3 records
我正在尝试使用mysql和php,但我不知道该怎么办。
答案 0 :(得分:1)
没有一种干净的方法可以实时生成当年的每一天的表,我从generate days from date range中提取了子表代码(以示感谢),因为它不使用任何循环等,并且执行时间短。话虽如此,您可以选择:
your_table
只需用您的表名替换URLSession.shared.dataTask(with: url) { (data, response, err) in
guard let data = data else { return }
if err == nil {
do {
let decoder = JSONDecoder()
let devo = try decoder.decode(Devotion.self, from: data)
DispatchQueue.main.async {
self.articleBody = devo.body
self.webView.loadHTMLString("<html><body>\(self.articleBody)</body></html>", baseURL: nil)
}
} catch let err {
print("Err", err)
}
}
}.resume()
答案 1 :(得分:0)
首先让我们假设您的记录已经被获取,并且可以在名为$ rows的关联数组中使用(在查询和mysqli_fetch_array类型调用之后):
$ra=array();
$nr=count($rows);
for ($i=0; $i<$nr; $i++) {
$start=$rows['start_date'];
$end=$rows['end_date'];
$sec=$rows['sec'];
if (isset($ra[$start])) {
$ra[$start]+=$sec;
} else {
$ra[$start]=$sec;
}
if (isset($ra[$end])) {
$ra[$end]+=$sec;
} else {
$ra[$end]=$sec;
}
}
print_r($ra);
答案 2 :(得分:0)
您必须遍历几天
select sum(sec) from table where ('2018-08-01') between start_date and end_date ;