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

标签 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'];
   }

我如何从这个表中计算一个月的总提交

我使用的月份:

<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 评论之后再次编辑,并考虑到他在上面的评论 datevarchar

我假设 $_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/

相关文章:

php - 在不使用数据库或文件的情况下在 php 中进行基于 Web 的聊天

javascript - 我可以使用 insertAdjacentHTML 添加一长串 html 标签和文本吗?

html - 在内网强制 "Internet Explorer 8"浏览器模式

mysql - 如何在 SQL 中的另一个 select 中编写 select 语句

mysql - 将 MySQL 表从 MyISAM 切换到 InnoDB - 我该如何处理 FULLTEXT 的列索引

mysql - Laravel 上的原始查询在哪里?

php - MySql 查询使用两个带内连接的表(我认为)

php - UPDATE 查询的增量不超过 4

javascript - $(window).on ('load' , ...) 在 MS Edge 中出现得太快

php - Laravel 中的查询