我有一张桌子,上面有学校宿舍及其开始和结束日期。
|yrq |开始日期|结束日期 | |--------------------------| |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';
返回除第一个和最后一个 yrq 之外的所有日期 ( B124, B231, B232
),即使日期在B233
and内B123
。好走!
我发现了如何包含 yrqs,这意味着如果日期落在 yrq 的中间,包括它(翻转 '<' 和 '>' 符号以及传入的开始和结束日期):
SELECT yrq FROM yrq WHERE start_date<='2013-02-01' AND end_date>='2012-02-01';
这将返回所有列出的季度,而不是其他季度。好走!
我遇到问题的查询是获取开始日期和结束日期完全在其中的 yrq。示例:我想查找日期范围2013-02-01
为的 yrq 2013-02-15
,即B233
。
我正在调用一个运行查询的 php 函数。我正在传递一个包容性标志,而我没有答案的情况应该在包容性情况下返回结果。为了封装所有包容性案例,我计划首先运行我没有答案的查询,如果它返回一个空集,然后运行上面的包容性查询。如果有更优雅的方式,我会全神贯注。
谢谢!