选择日期范围内的季度

时间:2013-02-21 05:14:06

标签: php mysql sql date between

我有一张桌子,里面有学校宿舍及其开始和结束日期。

|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';

即使日期属于B124, B231, B232B233,也会返回除第一个和最后一个yrq以外的所有内容(B123)。很高兴!

我发现如何包含yrqs,意思是如果日期落在yrq的中间,包括它(翻转'&lt;'和'&gt;'标志以及传入的开始和结束日期):< BR />

SELECT yrq FROM yrq WHERE start_date<='2013-02-01' AND end_date>='2012-02-01';

这将返回列出的所有季度,而不是其他季度。很高兴!

我遇到问题的查询是获得一个yrq,其中开始日期和结束日期完全在其中。示例:我想找到2013-02-012013-02-15的日期范围的yrq,即B233

我正在调用运行查询的php函数。我正在通过一个包容性的旗帜,我没有答案的情况应该在包容性案例中返回一个结果。为了封装所有包容性案例,我计划运行查询,我首先没有答案,如果它返回一个空集,则运行上面的包含性查询。如果有一种更优雅的方式,我很满意。

谢谢!

1 个答案:

答案 0 :(得分:0)

此查询返回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

Fiddle