我有付款的数据库记录。在 date
字段中,我有来自日期选择器的所有 3 个选项 dd-month-year
。
现在我想知道一个月或任何特定日期的总付款提交。
if($_POST['date']!='' ){
$query ="SELECT SUM(submit) AS value_sum FROM payment where date='".$_POST['date']."' ";
$result=mysql_query($query,$con);
$row = mysql_fetch_assoc($result);
$sum = $row['value_sum'];
}
我如何从这个表中计算一个月的总提交
?
我使用的月份:
<p class="name">
<td>
<label for="name1">By Month</label>
</td>
<td>
<select name="month">
<option>Month</option>
<option value="JAN">January</option>
<option value="FEB">February</option>
<option value="MAR">March</option>
<option value="APR">April</option>
<option value="MAY">May</option>
<option value="JUN">June</option>
<option value="JUL">July</option>
<option value="AUG">August</option>
<option value="SEP">September</option>
<option value="OCT">October</option>
<option value="NOV">November</option>
<option value="DEC">December</option>
</select>
</td>
</p>
最佳答案
最好使用 MySQL 的 MONTH()
函数从 date
中提取月份。因此,假设您可以安排将 1 月传递为 1,将 2 月传递为 2,等等。使用如下查询
SELECT SUM(submit) AS value_SUM
FROM payment
WHERE MONTH(date)=required_month
AND YEAR(date)=required_year
看看 MySQL date and time functions当你有时间的时候。
检查该链接后,我看到有一个 MONTHNAME
函数,如果您过了一月、二月等,该函数将起作用。在这种情况下,查询是
SELECT SUM(submit) AS value_sum
FROM payment
WHERE MONTHNAME(date)=required_month
AND YEAR(date)=required_year
编辑,在 Barmar 发表评论后将 AND YEAR...
添加到两个查询中。当然,如果您确实想要所有 1 月份的总数,则可以将其省略。此外,如果您不想让您的用户指定当前年份,或者您希望它为默认年份,请在您的PHP代码。
在下面的 OP 评论之后再次编辑,并考虑到他在上面的评论 date
是 varchar
。
我假设 $_POST['date']
包含您想要总计的月份中的日期。将下面的行替换为您的行“$query = ...”
$query = 'SELECT SUM(submit) AS value_sum FROM payment';
$query .= 'WHERE MONTH(CONVERT(datetime, date))';
$query .= '=MONTH(CONVERT(datetime,' . $_POST['date'] . '))';
$query .= 'AND YEAR(CONVERT(datetime, date))';
$query .= '=YEAR(CONVERT(datetime, ' . $_POST['date'] . '))';
关于php - 如何从日期字段中仅选择月份?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17150602/