我在网页上工作,应根据当前年份对给定列中的值进行平均。 我有以下代码:
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页面的文本框中显示平均值?
由于
答案 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())