选择已知日期范围内的行

时间:2019-04-06 01:08:35

标签: mysql

我知道这一点:

$StartDate = '2019-05-01';
$EndDate = '2019-05-30';

如果我想选择包含$dateRAT_DateStart范围内的RAT_DateEnd的行,那会是什么错误?

实际上我有这个查询吗?

SELECT * FROM ___Rates 
WHERE (RAT_DateStart BETWEEN :StartDate AND :EndDate) 
    OR (RAT_DateEnd BETWEEN :StartDate AND :EndDate);

我的桌子如下:

|--------|---------------|-------------|
| RAT_Id | RAT_DateStart | RAT_DateEnd |
|--------|---------------|-------------|
|      1 |    2019-04-10 |  2019-09-24 |
|      2 |    2019-02-03 |  2019-04-15 |
|--------|---------------|-------------|

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

也许Nick的解决方案就是您所追求的,但是以下是更典型的要求...

SELECT c.olumns
     , y.ou
     , a.ctually
     , w.ant
  FROM ___Rates
 WHERE :StartDate < RAT_DateEnd
   AND :EndDate   >= RAT_DateStart;

答案 1 :(得分:0)

如果您希望开始日期和结束日期($StartDate$EndDate都包含在RAT_DateStartRAT_DateEnd指定的范围内,则需要重新组织{ {1}}子句:

WHERE

输出(用于您的示例数据):

SELECT * FROM ___Rates 
WHERE (:StartDate BETWEEN RAT_DateStart AND RAT_DateEnd) 
  AND (:EndDate   BETWEEN RAT_DateStart AND RAT_DateEnd);

Demo on dbfiddle