Mysql 选择在已知日期范围内的行

Mysql 选择在已知日期范围内的行,mysql,Mysql,我知道这一点: $StartDate = '2019-05-01'; $EndDate = '2019-05-30'; 如果我想选择包含我的$date的行在RAT_DateStart和RAT_DateEnd范围内,我的错误是什么 实际上我有这个疑问 SELECT * FROM ___Rates WHERE (RAT_DateStart BETWEEN :StartDate AND :EndDate) OR (RAT_DateEnd BETWEEN :StartDate AND :E

我知道这一点:

$StartDate = '2019-05-01';
$EndDate = '2019-05-30';
如果我想选择包含我的$date的行在RAT_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 |
|--------|---------------|-------------|

感谢您的帮助。

如果希望开始日期和结束日期$StartDate和$EndDate都包含在RAT_DateStart和RAT_DateEnd指定的范围内,则需要重新组织WHERE子句:

示例数据的输出:

RAT_Id  RAT_DateStart       RAT_DateEnd
1       2019-04-10 00:00:00 2019-09-24 00:00:00

也许尼克的解决方案就是你想要的,但下面是一个更典型的请求

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

您希望日期$StartDate和$EndDate都包含在RAT_DateStart和RAT_DateEnd指定的范围内?@Nick,实际上查询没有返回任何行。它应该返回我的第一个,因为已知的日期范围是我在表中第一行的范围。
SELECT c.olumns
     , y.ou
     , a.ctually
     , w.ant
  FROM ___Rates
 WHERE :StartDate < RAT_DateEnd
   AND :EndDate   >= RAT_DateStart;