值应该在两列的值之间

时间:2016-10-31 12:43:44

标签: mysql comparison

假设我有一张表:

ID    (int)
Date1 (date)
Date2 (date)

如何查询x大于或等于Date1但小于或等于Date2的行?

我目前有这个where子句:

(
    Date1 <= DATE(NOW()) --just an example
AND 
    Date2 >= DATE(NOW()) --just an example
)

但根本不会返回任何行,但是当我尝试其中任何一行时:

Date1 <= DATE(NOW()) --just an example

Date2 >= DATE(NOW()) --just an example

它有效,我需要的是两个比较运算符,但在一行中,我认为我的逻辑类似于BETWEEN ... AND ...Date1Date2位于BETWEEN 1}}和AND运算符

考试情景:

ID          Date1          Date2
1           10-16-2016     10-30-2016

当我跑步时,

SELECT 
    * 
FROM 
    `mytable` 
WHERE
    DATE('10/10/16') BETWEEN Date1 AND Date2;

OR

SELECT 
    * 
FROM 
    `mytable` 
WHERE
(
     DATE('10/10/16') >= Date1
AND 
    DATE('10/10/16') <= Date2
);

它不返回任何行,但当DATE('10/10/16') >= Date1DATE('10/10/16') <= Date2单独运行时,会返回结果。

1 个答案:

答案 0 :(得分:0)

试试这个:

select *
from my_table
where x >= Date1
and x <= Date1

我从上一个查询中删除了括号,并在我的情况下工作。如果您仍然没有得到结果,那么您的数据可能没有任何匹配的行。