// Define period
$timeFrom = '2018-11-30';
$timeTo = '2018-12-02';
// Number of days for the period
$days = date_diff(date_create($timeFrom), date_create($timeTo))->format("%a");
// Query count of records between dates
$q = new \yii\db\Query();
$total = $q->from('order')
->where(['between', 'created_at', $timeFrom, $timeTo])
->count();
// Find average records per day
$average = $total / $days;
如果你有 Order 型号等级:
// Query count of records between dates
$total = Order::find()
->where(['between', 'created_at', $timeFrom, $timeTo])
->count();
2条答案
按热度按时间cedebl8k1#
方法
average
在$q->average('DATEDIFF('created_at', CURRENT_DATE())');
只是增加了AVG(DATEDIFF('created_at', CURRENT_DATE()))
到sql命令。正如jirisemmler所说,您要做的是sql而不是yii。
你需要做的就是找到你感兴趣的时间段的记录数,然后除以该时间段的天数。
可能是这样的
如果你有
Order
型号等级:ubof19bj2#
我相信这比yii2更像是sql相关的问题。你需要的(如果我理解正确的话)是:
计算从开始到今天的天数
数一数所有的行
除以这些数字得到平均数。
我试过这个,效果很好
回到yii2:我相信您必须手动构建这个查询