我有付款的数据库记录。在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'];
}
如何从此表中计算一个月的总submit
?
我正在使用的月份:
<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>
答案 0 :(得分:2)
最好使用MySQL date
函数从MONTH()
中提取月份。因此,假设您可以安排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
函数可以在1月,2月等通过时运行。在这种情况下,查询是
SELECT SUM(submit) AS value_sum
FROM payment
WHERE MONTHNAME(date)=required_month
AND YEAR(date)=required_year
编辑,在Barmar发表评论后向两个查询添加AND YEAR...
。当然,如果你做想要所有1月份的总数,你可以把它留下来。此外,如果您不想让您的用户指定当前年份,或者您希望将其设置为默认值,请在PHP代码中安排required_year
为YEAR(CURRENT_DATE())
。
编辑,并考虑到他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'] . '))';
答案 1 :(得分:1)
$query ="SELECT SUM(submit) AS value_sum FROM payment where date LIKE '%".$_POST['date']."%' ";
通过这样的结果,您可以获得所有结果,例如,日期中包含“MAY”。
答案 2 :(得分:0)
SELECT SUM(submit) AS value_sum FROM payment where date BETWEEN $_POST['date1'] AND
$_POST['date2'];