PHP基于年份日期的列中的平均值

时间:2016-04-19 15:31:54

标签: php mysql pdo

我在网页上工作,应根据当前年份对给定列中的值进行平均。 我有以下代码:

public function getElecReadings(){
        try {
            $stmt = $this->dbconn->prepare("SELECT AVG(ElecUsage), DateAdded FROM elec_readings  WHERE AccountNumber = '" . $_SESSION['user_session'] . "'");
            $stmt->execute();
            return $stmt;
        } catch (Exception $e) {

        }
    }

据我所知,应该从ElecUsage列中的所有值中选择平均值。然而,我想知道如何根据当前年份从列中选择所有平均值。我知道要获得当前年度我可以做的事情:<?php echo date("Y"); ?>这将回应2016年。

我的DateAdded列存储为日期类型。所以今天是2016-04-19。有没有办法从列中提取2016并将其应用于select语句,然后在HTML页面的文本框中显示平均值?

由于

4 个答案:

答案 0 :(得分:1)

你基本上自己回答了这个问题:

$year = date("Y");
$year = "$year%";
$stmt = $this->dbconn->prepare("SELECT AVG(ElecUsage), DateAdded FROM 
elec_readings  WHERE AccountNumber = '" . $_SESSION['user_session'] . "' 
AND DateAdded LIKE '$year'");

这将提取2016年的所有帐号 - 以及我认为你想要的东西吗?

答案 1 :(得分:1)

关于您的查询。您必须从年份(日期)=&#39; current_year&#39;

的表中选择平均值

所以你的代码可能是这样的:

public function getElecReadings(){
        try {
            $current_year = date('Y');
            $stmt = $this->dbconn->prepare("SELECT AVG(ElecUsage), 
            DateAdded FROM elec_readings  WHERE year(DateAdded) = '$current_year' and AccountNumber = '" .$_SESSION['user_session'] . "'");
            $stmt->execute();
            return $stmt;
        } catch (Exception $e) {

        }
    }

您还可以使用其他查询来提取每年的每个平均值:

SELECT AVG(ElecUsage), year(DateAdded) FROM elec_readings GROUP BY YEAR(DateAdded)

答案 2 :(得分:1)

我会做这样的事情:

public function getElecReadings(){
    try {
        $stmt = $this->dbconn->prepare("SELECT AVG(ElecUsage), DateAdded FROM elec_readings  WHERE AccountNumber = '" . $_SESSION['user_session'] . "' AND CurrentYear LIKE '%2016'");
        $stmt->execute();
        return $stmt;
    } catch (Exception $e) {

    }
}

它对我有用。如前所述,只需使用PHP获取年份,然后输出该变量。

答案 3 :(得分:0)

您还可以使用CURDATE()获取当前使用mysql的年份。 只需将此条件添加到您的选择语句

即可
AND YEAR(DateAdded) = YEAR(CURDATE())