如何从mysql数据库中查找与特定月份匹配的所有数据?

时间:2017-04-26 14:06:51

标签: php mysql

我目前无法从数据库中获取与特定月份匹配的所有数据,并且仅显示该月份的所有数据。这是我尝试过的。

<?php 
require('./connect.php'); 

?>
<?php
$name1 = $conn->prepare("SELECT * FROM garden WHERE MONTH(Apr)");
$name1->execute();
 while($row = $name1->fetch()) {
    $t = $row["temp"];
    echo $t;
    echo "sdasds";
    }
    ?>

数据库有time列,将日期存储为12-Apr-2017,我想查找4月或月份的所有详细信息。

2 个答案:

答案 0 :(得分:6)

您没有正确使用MONTH()。您需要将列标识符作为参数传递,并将其值与您想要的值进行比较,即4月是第四个月时的值:

SELECT * FROM garden WHERE MONTH(STR_TO_DATE(dateColumn, '%e-%b-%Y')) = 4

如果您想要更具可读性的查询,请使用MONTHNAME()

SELECT * FROM garden WHERE MONTHNAME(STR_TO_DATE(dateColumn, '%e-%b-%Y')) = 'April'

当您将日期存储为字符串而不是日期时,您还会注意到我使用STR_TO_DATE()。在将来,您应该考虑将日期存储为日期值,因为将它们转换为不同的格式很容易,这使得日期工作变得更加容易。

答案 1 :(得分:1)

不是将Apr作为参数,而是在4月份通过4。然后

您的查询看起来像 SELECT * FROM garden WHERE EXTRACT(MONTH FROM time)= 4;

希望这会有所帮助:)