从yii2中输入日期的列计算平均天数总和,并从今天日期开始计算

从yii2中输入日期的列计算平均天数总和,并从今天日期开始计算,yii2,yii2-model,Yii2,Yii2 Model,我需要在yii2中查询或处理单个查询的方法方面的帮助 应用程序在yii2中,在管理仪表板上工作。我需要显示从今天起系统中启用的所有库存产品的平均天数(短时间内库存的平均年限) 注意:结果是,在仪表板上显示计数的列只需要一个平均总数 我有一个列为stock\u date的表,它以DateTime格式Y-m-d H:I:s存储 公式 (库存日期-今日日期)将给出系统中单个产品的年龄 “库存日期”列的总和/启用的产品总数 会给你平均天数 表格列: 库存标识(主键) 状态(1表示已启用) 库存日期(日

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

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

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

我有一个列为
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());