计算 yii2 中类型为 DATE 的列的平均天数与今天日期的差异

Calculate Avg Sum of days from column with type DATE in yii2 with diiference from today date

我需要有关查询的帮助或在 yii2 中处理单个查询的方法。

应用程序在 yii2 中,在管理仪表板上工作。我需要显示系统中已启用的从今天开始的所有库存产品的平均天数(简而言之,库存库存的平均年龄)。

注意:结果,列只需要一个平均总数即可在仪表板上显示计数。

我有一个 table 列 stock_date ,以 DateTime 格式存储 Y-m-d H:i:s.

公式

  1. ( STOCK_DATE - TODAY DATE ) 会给出系统中单品的年龄。
  2. “stock_date”列的总和/启用的产品总数 会给你平均天数。

Table 列:

stock_date column screenshot

$AvgStatsCount = Inventory::find()
    ->select('sum(stock_date ) as stockdate')
    ....
    ->all();

有人知道如何以正确的方式做到这一点吗?

Posting Answer :  working code for me : 

$query = new Query; 
$query->from('mytable')->where(['status' => 1]); 
$AvgStatsCount = $query->average('DATEDIFF(stock_date, CURRENT_DATE())');

为此,我建议使用 yii\db\Query 而不是从 ActiveRecord 扩展而来的模型 class。使用 Query,您可以使用 averageminmax 等方法,这些方法将列名或 SQL 表达式字符串作为参数,而 return查询中的最大值、最小值或平均值。

为了区分 stock_date - today 我不明白你用的是什么格式,所以我不能帮你这样。

编辑:

所以 stock_dateY-m-d H:i:s 日期格式中,你可以用 yii\db\Query class:

做这样的事情
use yii\db\Query;
...
$query = new Query;
$query->from('myTable');
$query->where(['>', 'stock_date', date('Y-m-d')]);
$average = $query->average('DATEDIFF(`stock_date`, CURRENT_DATE())');