我需要查询帮助或在yii2中使用单个查询。
应用程序在yii2中,在管理仪表板上工作。我需要显示从今天开始在系统中启用的所有库存产品的平均天数(短期存货库存平均年龄)。
注意:列中只需要一个平均总计,以便在仪表板上显示计数。
我有一个列stock_date
的表,它以DateTime格式存储Y-m-d H:i:s
。
式
表格列
$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())');
答案 0 :(得分:0)
为此,我建议使用yii\db\Query
代替从ActiveRecord
延伸的模型类。使用Query
,您可以使用average
,min
和max
等方法,将列名或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())');