-3

我在数据库中有一个表:

预订:

id | name   |   from       |     to
1  | aaa    |  2013-04-23  |  2013-05-06
2  | bbb    |  2013-04-01  |  2013-08-06
3  | ccc    |  2013-05-12  |  2013-05-19
4  | ddd    |  2013-06-01  |  2013-07-27
5  | eee    |  2013-06-23  |  2013-07-06
6  | fff    |  2013-07-23  |  2013-08-09

我想通过 $year 和 $month。例如:

$year = 2013;
$month = '04';

这应该返回我:

1  | aaa    |  2013-04-23  |  2013-05-06
2  | bbb    |  2013-04-01  |  2013-08-06

因为 2013 年和 04 月在此期间。

下一个例子:

$year = 2013;
$month = '05';

应该返回:

1  | aaa    |  2013-04-23  |  2013-05-06
2  | bbb    |  2013-04-01  |  2013-08-06
3  | ccc    |  2013-05-12  |  2013-05-19


$year = 2013;
$month = '06';

2  | bbb    |  2013-04-01  |  2013-08-06
3  | ccc    |  2013-05-12  |  2013-05-19
4  | ddd    |  2013-06-01  |  2013-07-27
5  | eee    |  2013-06-23  |  2013-07-06


$year = 2013;
$month = '07';

2  | bbb    |  2013-04-01  |  2013-08-06
4  | ddd    |  2013-06-01  |  2013-07-27
5  | eee    |  2013-06-23  |  2013-07-06
6  | fff    |  2013-07-23  |  2013-08-09

$year = 2013;
$month = '08';

2  | bbb    |  2013-04-01  |  2013-08-06
6  | fff    |  2013-07-23  |  2013-08-09

查询应该如何在 SQL 中使用两个参数 - 年和月。

编辑:好的,我尝试:

$年 = 2013; $月 = '04';

SELECT * FROM reservation WHERE from <= '$year-$month-01' AND to >= '$year-$month-01'

但这给我带来了零记录。

4

2 回答 2

0
select *
from tbl
where from <= '$year-$month-01' 
  and to >= '$year-$month-01' 

重要的是,月份用零填充,以便上述工作。

于 2013-06-16T18:35:26.420 回答
0

老实说,我擅长 PHP,但在 SQL 方面表现平平……很有可能你可以使用 SQL 来解决这个问题(就像 chris 所说的那样)。但是,如果我处于你的位置,因为我不太了解 SQL,如果它是一个小表,我会提取所有记录并使用 PHP 进行验证。

如果它是一个大表,那么这只是浪费系统资源,我会研究基于 SQL 的解决方案。

于 2013-06-16T18:49:49.527 回答