我在数据库中有一个表:
预留:
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'
但这会让我失去记录。
答案 0 :(得分:0)
select *
from tbl
where from <= '$year-$month-01'
and to >= '$year-$month-01'
重要的是,将月份填充零以便上述工作。
答案 1 :(得分:0)
老实说,我擅长PHP,但在SQL方面表现平平...有一种很好的可能性,你可以使用SQL解决这个问题(如chris所说)。但是,如果我在你的位置,因为我不知道SQL,如果它是一个小表,我会拉所有记录并使用PHP来验证。
如果它是一个大表,那么这只是浪费系统资源,我会研究基于SQL的解决方案。