如何从日期字段中仅选择月份?

时间:2013-06-17 14:56:17

标签: php html mysql

我有付款的数据库记录。在date字段中,我从日期选择器中获得了全部3个选项dd-month-year

datebase of payment

现在我想知道一个月的总付款提交或任何特定日期。

   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>

3 个答案:

答案 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_yearYEAR(CURRENT_DATE())

在下面的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'] . '))';

答案 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'];