繁体   English   中英

3个日期范围之间的Mysql查询

[英]Mysql query between 3 date ranges

我有一个允许用户生成报告的PHP脚本,他们可以选择3个日期范围。

2012-01-01 to 2012-01-31
AND 
2011-01-01 to 2011-01-31
AND 
2010-01-01 to 2010-01-31

但是当我执行查询,并且某个日期范围之间没有记录时,查询不返回任何值。

这是我的查询:

 SELECT DealerName WHERE InterviewDate >= "2012/01/01 " AND InterviewDate <= " 2012/03/31"
 AND InterviewDate >= "2012/07/01 " AND InterviewDate <= " 2012/09/31"

我需要一个查询,如果在1个日期范围内找到它,将返回数据,无论后续日期范围中是否没有数据。

数据汇总到一个表中,在该表中,相同的数据可能在多个日期。

例如:

dealerName 1    2012-01-01
dealerName 1    2012-02-31
dealerName 2    2012-03-01
dealerName 1    2012-06-01
dealerName 1    2012-06-31

因此,如果我想查询2012-01-01和2012-02-31和2012-06-01和2012-06-31之间的数据。 我意识到1个日期范围可以包含所有这些范围,但用户可能希望在这两个日期范围之间排除数据。

面试日期不能介于x和y之间,且仍介于z和zz之间。 你错过了一个OR - 另外,看看BETWEEN运算符

SELECT DealerName
FROM table
WHERE InterviewDate BETWEEN '2012-01-01' AND '2012-01-31'
    OR InterviewDate BETWEEN '2011-01-01' AND '2011-01-31'
    OR InterviewDate BETWEEN '2010-01-01' AND '2010-01-31'

编辑,对不起,错过了表名:)

您需要使用OR而不是AND

WHERE   (InterviewDate BETWEEN '2012-01-01' AND '2012-01-31')
        OR
        (InterviewDate BETWEEN '2011-01-01' AND '2011-01-31')
        OR
        (InterviewDate BETWEEN '2010-01-01' AND '2010-01-31')

更新1

我认为你有Relational Division问题,

SELECT name
FROM   table1
WHERE  DATE BETWEEN '2012-01-01' AND '2012-02-31'
       OR
       DATE BETWEEN '2012-06-01' AND '2012-06-31'
GROUP BY name
HAVING COUNT(*) = 2

为什么不使用OR代替AND?

SELECT DealerName WHERE ( InterviewDate >= "2012/01/01 " AND InterviewDate <= " 2012/03/31" )  OR ( InterviewDate >= "2012/07/01 " AND InterviewDate <= " 2012/09/31" )

使用OR而不是AND

SELECT DealerName FROM tbl
WHERE InterviewDate >= '2012/01/01' AND InterviewDate <= '2012/03/31'
 OR InterviewDate >= '2012/07/01' AND InterviewDate <= '2012/09/31'

这是我带走:)因为你在检查month一月为year 2010,2011,2012年我们可以用MONTHYEAR的功能。

SELECT DealerName
FROM yourtable
WHERE Month(InterviewDate) = 1
AND Year(InterviewDate) IN (2010, 2011, 2012)
;

SELECT DealerName
FROM yourtable
WHERE Month(InterviewDate) IN (1, 2) // if there are particular months
AND Year(InterviewDate) IN (2010, 2011, 2012)
;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM