我将根据日期范围和日期顺序从数据库中提取行,例如
SELECT date, code FROM records WHERE personid = '133'AND date >= '2017-02-10' AND date <= '2017-06-13' AND code IN ('P','T') ORDER BY date ASC
这些记录我喜欢以特定方式分组或订购。
一种方法是按连续日期对记录进行分组,为此,我有以下功能:
function getRecordsWithIntervals(array $records, $interval_size)
{
$intervals = array();
foreach (array_chunk($records, $interval_size) as $interval_records) {
$first_record = reset($interval_records);
$interval = array(
'start' => $first_record['date'],
'codes' => array_column($interval_records, 'code'),
'count' => count($interval_records),
);
$intervals[] = $interval;
}
return $intervals;
}
连续5天我调用该函数,如
getRecordsWithIntervals($records, 5);
但现在我想添加每周,每月或每季度的功能。例如:
getRecordsWithIntervals($records, 'weekly');
在2017年2月2日 - 2017年6月13日的日期范围内,每个Mo-Sunday间隔订购/分组$记录???
这将是2月和3月用PHP生成的JS
['Feb 6-12, 2017’,1,’1’],
['Feb 13-19, 2017’,4,’4’],
['Feb 20-26, 2017’,4,’4’],
['Feb 27-??, 2017’,5,’5’],
['Mar 6-12, 2017',5,'5'],
['Mar 13-19, 2017',5,'5'],
['Mar 20-26, 2017’,3,’3’],
['Mar 27-xx, 2017’,4,’4’],
答案 0 :(得分:1)
MySQL可能是概念上与您的数据形成组的更好地方。例如,如果您想要点击周数和月份,您可以将这些项添加到您的select子句中:
SELECT
date,
WEEK(date) AS week,
MONTH(date) AS month,
code
FROM records
WHERE
personid = '133' AND
date BETWEEN '2017-02-10' AND '2017-06-13' AND
code IN ('P','T')
ORDER BY date;