私は、MySQLテーブルのデータを取得してHTMLテーブルに出力する次のPHPスクリプトを用意しています。私は今月の情報のみを表示するようにデータを編集したいと思います。MySQLクエリ結果を今月から表示するにはどうすればよいですか?
MySQLテーブルでは、私のテーブルにInvoiceDate
という別の列があります。これはDATETIME
タイプで、これらの値が今月のものかどうかを確認できます。クエリを調整するか、現在の月の結果を自動的に表示するPHPコードのスニペットを追加して、毎月新しい値を表示するためにコードを更新する必要はありません。
これを達成する最も良い方法は何ですか?
<?php
require_once 'config.php';
// create connection
$conn = new mysqli($currentConfig['host'], $currentConfig['user'], $currentConfig['pass'], $currentConfig['name']);
// check connection
if ($conn->connect_error) {
die('Connection failed: '.$conn->connect_error);
}
$sql = "SELECT SUM(InvoiceAmount) AS TotalBilling,SUM(ClientCostToDate) AS WIP FROM Estimates";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// output data of each row
while ($row = $result->fetch_assoc()) {
$wip = $row['WIP'];
$total_billing = $row['TotalBilling'];
// echo data into HTML table
echo
'<tbody>'.'<tr>'.'<td>'.$total_billing.'</td>'.'<td>'.$wip.'</td>'.'</tr>'.'</tbody>';
}
} else {
echo 'No results';
}
$conn->close();
私はスタックオーバーフローの上に発見し、それが動作しません。このクエリを試してみました:
SELECT InvoiceDate, SUM(InvoiceAmount) AS TotalBilling,SUM(ClientCostToDate) AS WIP FROM Estimates WHERE DATE_FORMAT(InvoiceDate,"%m")=DATE_FORMAT(NOW(),"%m");
私もまた、動作しません。このクエリを見つけた:
SELECT InvoiceDate, SUM(InvoiceAmount) AS TotalBilling, SUM(ClientCostToDate) AS WIP FROM Estimates WHERE MONTH(InvoiceDate) = MONTH(now()) AND YEAR(InvoiceDate) = MONTH(now());
今まで私にとって適切に機能しているのは次のクエリです:
SELECT SUM(InvoiceAmount) AS TotalBilling,SUM(ClientCostToDate) AS WIP FROM Estimates WHERE InvoiceDate > '2016-09-01';
これは今月の結果を表示しますが、月ごとにクエリを編集する必要があるため、明らかに理想的ではありません。
試してください:月(InvoiceDate)= 2 – Tarek
が@ahmed:いいえ、それは買ってあげるALL月2者関係なく、今年の。 –