我想从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)
答案 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天。