如何查询2个日期范围(mysql)

时间:2009-01-23 03:07:45

标签: mysql

我想从40天前和20天前提取电子邮件,每个范围为1天。这就是我所拥有但它不返回任何行。

SELECT s.*, r.email FROM sellyourcar s 
     INNER JOIN register r ON s.rid = r.slno 
     WHERE s.dt BETWEEN DATE_SUB(curdate(),INTERVAL 20 DAY) AND DATE_SUB(curdate(), INTERVAL 19 DAY) AND 
     s.t BETWEEN DATE_SUB(curdate(),INTERVAL 40 DAY) AND DATE_SUB(curdate(), INTERVAL 39 DAY)

1 个答案:

答案 0 :(得分:2)

你应该使用OR而不是和你的两个间隔:

SELECT s.*, r.email 
FROM sellyourcar s INNER JOIN register r ON s.rid = r.slno 
WHERE s.dt BETWEEN DATE_SUB(curdate(),INTERVAL 20 DAY) AND DATE_SUB(curdate(), INTERVAL 19 DAY) 
OR s.dt BETWEEN DATE_SUB(curdate(),INTERVAL 40 DAY) AND DATE_SUB(curdate(), INTERVAL 39 DAY)

另外注意,至少在Oracle中,我不确定在MYSQL中BETWEEN函数是否还返回与最终项匹配的项。例如,3到5之间也会返回3和5而不仅仅是4的项目。因此,您可能只想检查电子邮件的日期是否比当前日期少20或40天。