我需要從我的數據庫中選擇昨天和一週前存儲的結果。我可以在相同的查詢中完成嗎?從昨天和一週前選擇結果
SELECT *
FROM t1
WHERE DATE(t1recordDate) = CURDATE() - INTERVAL 1 DAY
和
SELECT *
FROM t1
WHERE DATE(t1recordDate) = CURDATE() - INTERVAL 7 DAY
我需要從我的數據庫中選擇昨天和一週前存儲的結果。我可以在相同的查詢中完成嗎?從昨天和一週前選擇結果
SELECT *
FROM t1
WHERE DATE(t1recordDate) = CURDATE() - INTERVAL 1 DAY
和
SELECT *
FROM t1
WHERE DATE(t1recordDate) = CURDATE() - INTERVAL 7 DAY
您可以使用or
邏輯運算符,或者更好,速記in
:
SELECT *
FROM t1
WHERE DATE(t1recordDate) IN
(CURDATE() - INTERVAL 1 DAY, CURDATE() - INTERVAL 7 DAY)
你可以,如果你只需要值使用或與DATE_SUB昨天和一個wekk前,但不是在範圍內的日子
SELECT *
FROM t1
WHERE DATE(t1recordDate) = DATE(DATE_SUB(CURDATE(),INTERVAL 1 DAY))
OR DATE(t1recordDate) = DATE(DATE_SUB(CURDATE(),INTERVAL 7 DAY))
,如果你需要的所有範圍
SELECT *
FROM t1
WHERE DATE(t1recordDate) BETWEEN DATE(DATE_SUB(CURDATE(),INTERVAL 7 DAY))
AND DATE(DATE_SUB(CURDATE(),INTERVAL 1 DAY))
如果你不喜歡瑣碎的解決方案,您可以試試這個:
select t1.*
from (
select
curdate() - interval 1 day as ts_from,
curdate() - interval 1 second as ts_to
union all
select
curdate() - interval 7 day as ts_from,
curdate() - interval 6 day - interval 1 second as ts_to
) as r
join t1 on t1.t1recordDate between r.ts_from and r.ts_to
http://rextester.com/PLVMY63927
它至少可以使用索引。
您是否嘗試過使用'OR'? –
顯然OR不是唯一的解決方案... – santa