-4

这是我的选择代码

<select id="month_id" name="month_id">

  <option value="">Select One</option>

  <option value="<?php echo date('Y-01-01 00:00:00'); ?>">January</option>
  <option value="<?php echo date('Y-02-01 00:00:00'); ?>">February</option>
  <option value="<?php echo date('Y-03-01 00:00:00'); ?>">March</option>
  <option value="<?php echo date('Y-04-01 00:00:00'); ?>">April</option>
  <option value="<?php echo date('Y-05-01 00:00:00'); ?>">May</option>
  <option value="<?php echo date('Y-06-01 00:00:00'); ?>">June</option>
  <option value="<?php echo date('Y-07-01 00:00:00'); ?>">July</option>
  <option value="<?php echo date('Y-08-01 00:00:00'); ?>">August</option>
  <option value="<?php echo date('Y-09-01 00:00:00'); ?>">September</option>
  <option value="<?php echo date('Y-10-01 00:00:00'); ?>">October</option>
  <option value="<?php echo date('Y-11-01 00:00:00'); ?>">November</option>
  <option value="<?php echo date('Y-12-01 00:00:00'); ?>">December</option>
</select>

数据按日期存储在 db 表中,日期列喜欢 2013-01-14 17:40:12

现在假设我选择一月,然后单击提交。我想获取那些日期列值在该年的 1 月 1 日到 31 日之间的数据。

4

2 回答 2

2

你可以试试

SELECT * FROM `table` WHERE MONTH(date_column)=MONTH('2013-03-31 13:13:10')

只需从发布日期中提取月份值,例如

$whole_date=$_POST['month_id'];
$query=" SELECT * FROM `table` WHERE MONTH(date_column)=MONTH('".$whole_date."')";

或者

$month=date("m", strtotime($whole_date));
$query=" SELECT * FROM `table` WHERE MONTH(date_column)=$month";
于 2013-07-02T19:11:15.587 回答
0

将您的“值=”语句更改为仅发送年份和月份(或在生成查询之前将它们解析出来)

然后您的查询将看起来(类似于):

select * from <sometable> where YEAR(datecolumn)=<year value> 
       and MONTH(datecolumn)=<month value>
于 2013-07-02T19:03:02.223 回答