在我的情况下,我在mySQL中有一个日期字段,我曾经通过下面的代码获取变量的值 . 当我查询完整的日期,例如“08-28-1989”时,这是正确的 .
MySQL的:
SELECT COUNT(*)
FROM content
where dateReceived='{$approved_date}'
and description='{$description}'
PHP:
$approved_year = $_POST["approved_year"];
$approved_month = $_POST["approved_month"];
$approved_day = $_POST["approved_day"];
$approved_dt = strtotime($approved_year."-".$approved_month."-".$approved_day);
$approved_date = date("Y-m-d",$approved_dt);
如果我说用户只输入"08"(仅限月份),那么如何显示该月的所有记录,而不管日期和年份,如何使其更具动态性 . 或者用户只需输入月份和年份,它只是查询我的数据库 .
这是我的HTML:
<p>
Date Approved
<select name="approved_month">
<?php
$month = array(" ","January","February","March","April",
"May","June","July","August",
"Septembe","October","November","December");
for($x=0;$x<12;$x++){
echo "<option value=\"".$x."\">".$month[$x]."</option>";
}
?>
</select>
<input type="text" name="approved_day" value="" size="2" />
<input type="text" name="approved_year" value="" size="10" />
</p>
2 回答
在mysql端执行此操作的一种方法是使用MONTH()和YEAR()函数 .
Note: 这种方法的缺点(使用
date
列上的函数)是date
列上不会使用任何索引 .可以使用BETWEEN重写第二个查询
可以使用relative date formats在php中轻松构建此类查询的月份的第一个日期和最后日期
这是 SQLFiddle 演示
您可以将日期分解为数据库中的单独字段 . 日,月和年 . 用爆炸分解日期:
然后,您可以将单独的日期属性插入数据库,然后使用mysqli查询根据用户输入显示所需的结果 . 即: