获取包含月份和年份的记录 - SQL

时间:2013-06-16 18:27:07

标签: php mysql sql

我在数据库中有一个表:

预留:

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中查询。

编辑: 好的,我试试:

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

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

但这会让我失去记录。

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

老实说,我擅长PHP,但在SQL方面表现平平...有一种很好的可能性,你可以使用SQL解决这个问题(如chris所说)。但是,如果我在你的位置,因为我不知道SQL,如果它是一个小表,我会拉所有记录并使用PHP来验证。

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

相关问题