从yii2中输入日期的列计算平均天数总和,并从今天日期开始计算
我需要在yii2中查询或处理单个查询的方法方面的帮助 应用程序在yii2中,在管理仪表板上工作。我需要显示从今天起系统中启用的所有库存产品的平均天数(短时间内库存的平均年限) 注意:结果是,在仪表板上显示计数的列只需要一个平均总数 我有一个列为从yii2中输入日期的列计算平均天数总和,并从今天日期开始计算,yii2,yii2-model,Yii2,Yii2 Model,我需要在yii2中查询或处理单个查询的方法方面的帮助 应用程序在yii2中,在管理仪表板上工作。我需要显示从今天起系统中启用的所有库存产品的平均天数(短时间内库存的平均年限) 注意:结果是,在仪表板上显示计数的列只需要一个平均总数 我有一个列为stock\u date的表,它以DateTime格式Y-m-d H:I:s存储 公式 (库存日期-今日日期)将给出系统中单个产品的年龄 “库存日期”列的总和/启用的产品总数 会给你平均天数 表格列: 库存标识(主键) 状态(1表示已启用) 库存日期(日
stock\u date
的表,它以DateTime格式Y-m-d H:I:s
存储
公式
- 库存标识(主键)
- 状态(1表示已启用)
- 库存日期(日期时间)
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
扩展的模型类。使用Query
可以使用average
、min
和max
等方法,将列名或SQL表达式字符串作为参数,并从查询中返回最大值、最小值或平均值
我不明白你用的是什么格式,所以我不能帮助你喜欢这个和那个
编辑:
因此,使用Y-m-d H:i:s
date格式的stock\u date
,您可以使用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())');
为此,我建议使用
yii\db\Query
而不是从ActiveRecord
扩展的模型类。使用Query
可以使用average
、min
和max
等方法,将列名或SQL表达式字符串作为参数,并从查询中返回最大值、最小值或平均值
我不明白你用的是什么格式,所以我不能帮助你喜欢这个和那个
编辑:
因此,使用Y-m-d H:i:s
date格式的stock\u date
,您可以使用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())');
您使用什么数据类型?unix时间戳或日期时间的整数?使用什么数据类型?unix时间戳或日期时间的整数?我已经添加了DB列的屏幕截图。我所说的差异是指
stock\u date
具有格式为Y-m-d h:I:s的日期。要计算单个产品的使用年限,您需要将今天的日期与库存_date
列中提到的日期值之差计算出来。就像你计算你的年龄一样。(今日-DOB)将给出您的年龄。这样想吧,我们正在计算一个大家庭的平均年龄,在这个大家庭中,我们有所有成员和活着的成员的D.O.B。所以你们要计算所有个体的年龄,然后求其平均和。希望这能让我明白我在看什么。您是否能够编写参考查询代码。编辑了我的问题,现在无法测试代码,但它应该能让您知道该怎么做。我建议查看yii\db\Query
和MySQL函数的官方文档,这些函数非常有用。谢谢@marche。下面是我的工作代码:$query=newquery$查询->从('mytable')->其中(['status'=>1])$avgstatscont=$query->average('DATEDIFF(stock_-date
,CURRENT_-date());我已经添加了DB列的屏幕截图。我所说的差异是指stock\u date
具有格式为Y-m-d h:I:s的日期。要计算单个产品的使用年限,您需要将今天的日期与库存_date
列中提到的日期值之差计算出来。就像你计算你的年龄一样。(今日-DOB)将给出您的年龄。这样想吧,我们正在计算一个大家庭的平均年龄,在这个大家庭中,我们有所有成员和活着的成员的D.O.B。所以你们要计算所有个体的年龄,然后求其平均和。希望这能让我明白我在看什么。您是否能够编写参考查询代码。编辑了我的问题,现在无法测试代码,但它应该能让您知道该怎么做。我建议查看yii\db\Query
和MySQL函数的官方文档,这些函数非常有用。谢谢@marche。下面是我的工作代码:$query=newquery$查询->从('mytable')->其中(['status'=>1])$avgstatscont=$query->average('DATEDIFF(stock_-date
,CURRENT_-date());