在日期范围内选择宿舍
问题描述:
我有一张有宿舍和开始和结束日期的表格。
在日期范围内选择宿舍
|yrq |start_date|end_date | |--------------------------| |B233|2013-01-07|2013-03-23| |B232|2012-09-24|2012-12-20| |B231|2012-06-25|2012-09-13| |B124|2012-04-02|2012-06-21| |B123|2012-01-09|2012-03-27| ...
获取yrqs完全,这意味着yrqs完全落在日期范围内:
SELECT yrq FROM yrq WHERE start_date>='2012-02-01' AND end_date<='2013-02-01';
除了第一个和最后一个yrqs返回(),即使日期在B233
和B123
之间。很好去!
我发现了如何获得yrqs包含地,如果日期落在YRQ中间的意思,包括它(翻转“<”和“>”符号,并开始和结束日期传递):
SELECT yrq FROM yrq WHERE start_date<='2013-02-01' AND end_date>='2012-02-01';
这将返回所有列出的宿舍,没有其他宿舍。很好去!
查询我遇到的问题是获取一个yrq,其中的开始日期和结束日期完全在其中。例如:我想查找日期范围2013-02-01
到2013-02-15
的yrq,这将是B233
。
我打电话给运行查询的php函数。我传递一个包容性的标志,如果我没有答案,应该在包含性的情况下返回一个结果。为了封装所有包含案例,我计划运行查询,我没有第一个答案,如果它返回一个空集,然后运行上面的包含查询。如果有一种更优雅的方式,我是全部耳朵。
谢谢!
答
该查询返回yrq的参数在start_date和end_date内。这是你想要的?
SELECT *
FROM yrq
WHERE '2013-02-01' BETWEEN start_date AND end_date
AND '2013-02-15' BETWEEN start_date AND end_date
对不起,我已经解决了包容性的情况下。我在白板上写了这张票的任务,并没有想到要排除我已经解决的问题。我已经写过这个查询:'SELECT qtr FROM qtr WHERE start_date> ='2011-09-12'AND end_date Chrizzis 2013-02-21 05:27:22
你说“如果* *日期落在中间...... “ 哪个日期?你能给我们更多的输入/输出例子吗? – 2013-02-21 05:50:12
编辑我的问题以满足此评论。 – Chrizzis 2013-02-21 06:36:10