为了账号安全,请及时绑定邮箱和手机立即绑定

Yii2,从时间戳中获取平均值

Yii2,从时间戳中获取平均值

PHP
婷婷同学_ 2023-08-11 17:22:55
我有一个包含订单的基本表,其中有一个名为created_at的字段,它采用时间戳格式,我想获得每天创建的订单数量的平均值。发现了另一个类似的问题,类似于我的问题,我在下面发布了这一问题,希望每个人都能理解我想要做什么。//not working$q = new \yii\db\Query();$q->from('shopping_cart');$total = $q->average('DATEDIFF(`created_at`, CURRENT_DATE())'); 
查看完整描述

2 回答

?
蓝山帝景

TA贡献1843条经验 获得超7个赞

average中的方法$q->average('DATEDIFF('created_at', CURRENT_DATE())');只是添加AVG(DATEDIFF('created_at', CURRENT_DATE()))到 SQL 命令中。


正如 Jiri Semmler 所说,您想要做的是 SQL 而不是 Yii。


您所需要做的就是找到您感兴趣的时间段内的记录数,并将其除以该时间段的天数。


它可以是这样的


// 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();


查看完整回答
反对 回复 2023-08-11
?
慕莱坞森

TA贡献1810条经验 获得超4个赞

我相信这比 Yii2 更多与 SQL 相关的问题。你需要的是(如果我理解正确的话):

  1. 统计从年初到今天有多少天

  2. 计算所有行数

  3. 将这些数字相除即可得到平均值。

我已经尝试过了,效果很好

SELECT 

count(*) / (select round((unix_timestamp() - (select min(created_at) from table)) / 86400))

from table;

回到 Yii2:我相信你必须手动构建这个查询


\Yii::$app->db->createCommand()


查看完整回答
反对 回复 2023-08-11
  • 2 回答
  • 0 关注
  • 137 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号