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

时间:2017-01-18 17:52:17

标签: yii2 yii2-model

我需要查询帮助或在yii2中使用单个查询。

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

注意:列中只需要一个平均总计,以便在仪表板上显示计数。

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

  1. (STOCK_DATE - TODAY DATE)将为您提供系统中单品的年龄。
  2. 列`stock_date'的总和/已启用的产品总数 会给你平均的天数。
  3. 表格列

    • inventory_id(主键)
    • 状态(启用1)
    • stock_date(datetime)

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

1 个答案:

答案 0 :(得分:0)

为此,我建议使用yii\db\Query代替从ActiveRecord延伸的模型类。使用Query,您可以使用averageminmax等方法,将列名或SQL表达式字符串作为参数,并返回最大值,最小值或平均值。查询。

为了得到stock_date - today的差异,我不明白你使用的是什么格式,所以我无法帮助你这样做。

修改

因此,对于stock_date日期格式的Y-m-d H:i:s,您可以使用yii\db\Query类执行此类操作:

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