2017-03-01 48 views
0

我需要從我的數據庫中選擇昨天和一週前存儲的結果。我可以在相同的查詢中完成嗎?從昨天和一週前選擇結果

SELECT * 
FROM t1 
WHERE DATE(t1recordDate) = CURDATE() - INTERVAL 1 DAY 

SELECT * 
FROM t1 
WHERE DATE(t1recordDate) = CURDATE() - INTERVAL 7 DAY 
+2

您是否嘗試過使用'OR'? –

+0

顯然OR不是唯一的解決方案... – santa

回答

1

您可以使用or邏輯運算符,或者更好,速記in

SELECT * 
FROM t1 
WHERE DATE(t1recordDate) IN 
     (CURDATE() - INTERVAL 1 DAY, CURDATE() - INTERVAL 7 DAY) 
1

你可以,如果你只需要值使用或與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)) 
+0

不需要範圍,只需要完全匹配。 「URDATE」是否是錯字? – santa

+0

CURDATE ... answer udpated .. – scaisEdge

0

如果你不喜歡瑣碎的解決方案,您可以試試這個:

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

它至少可以使用索引。