亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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 關注
  • 165 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號