我的订单表使用的create_time时间戳来表示下单时间的,如果取当日订单好计算,但是如果取七天内的订单呢?
如果我想要得到七天内的每一天的订单数量又该怎么计算呢?真是郁闷,希望大神解答下哈,谢谢了。
我的订单表使用的create_time时间戳来表示下单时间的,如果取当日订单好计算,但是如果取七天内的订单呢?
如果我想要得到七天内的每一天的订单数量又该怎么计算呢?真是郁闷,希望大神解答下哈,谢谢了。
循环取肯定不好,最起码不是最好的。
稍微进步点的:一下子取7天的,然后在代码中分割,代码中分割数组还是很快的。
如果数据量很大跑数组不现实,那就sql语句吧,一次性取出来也是可以的。
等高手展示sql。
你可以在程序中先计算出一个日期,如果 strtotime(date('Y-m-d 00:00:00', strtotime('-7 days')) 得到7天前那天0点的时间戳,然后去where不就行了吗。
不建议用 MySQL 做统计,可以在每次生成一个订单时,把订单放到 redis 中
方案可以是每天一个集合.把每天的订单号都放到这个集合里
别管怎么统计,都很方便,比如统计某一天的订单,直接获取那天集合中的订单数据,不用走 MySQL
代码层面:
放上一段PHP代码供参考
// 获取任意两个时间点之间的日期
$getDatesBetweenTwoDays = getDatesBetweenTwoDays($startDate, $endDate);
$data = MySQL查询出来的结果;
// 初始化数据格式
foreach ($getDatesBetweenTwoDays as $key => $value) {
$result[$value] = 0;
}
// 若匹配则+1
if ($data) {
foreach ($data as $user) {
if (array_key_exists(date('Y-m-d', $user['regtime']), $result)) {
$result[date('Y-m-d', $user['regtime'])] = $result[date('Y-m-d', $user['regtime'])] + 1;
}
}
}
SELECT DATE(receive_time) receive_time,COUNT(*) FROM orders WHERE DATE_SUB(CURDATE(), INTERVAL 2 DAY) <= DATE(receive_time) GROUP BY receive_time;
我用的是mybatis xml去怎么接受这个数据
5 回答3.2k 阅读✓ 已解决
3 回答3.6k 阅读✓ 已解决
1 回答4k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
2 回答2.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
1 回答2.4k 阅读✓ 已解决
七天内的订单:
七天内每天的订单数量,先用where条件查出七天内的订单,再用group by 对每天进行分组就行了: