2013-05-08 111 views
1

嗨我想從兩天前得到我的數據庫中的條目數的行數。我有下面的代碼從現在開始直到兩天前獲取數據,但我只是想從兩天前的午夜到午夜的數據庫中的所有條目的數據。從兩天前從MYSQL獲取數據

這是我必須從現在到兩天前的代碼。

SELECT * FROM vistordetails1 WHERE date_time >= (NOW() - INTERVAL 2880 MINUTE) 

我可以做這樣的事情

SELECT * FROM vistordetails1 WHERE date_time >= (INTERVAL 1440 MINUTE - INTERVAL 2880 MINUTE) 
+0

爲什麼INTERVAL MINUTE而不是DAY? – 2013-05-08 01:52:54

回答

2

關閉,給這一個鏡頭...

SELECT * FROM vistordetails1 
WHERE date_time <= (NOW() - INTERVAL 1440 MINUTE) 
    AND date_time >= (NOW() - INTERVAL 2880 MINUTE) 

SQL有時可能有點混亂。嘗試在編程構造中考慮這一點。如果你的價值在一定範圍內,你想要做點什麼。

if(val > 1 && val < 10){ 
    //value is between 1 and 10 exclusive 
}else{ 
    //value is out side the range 
} 
1
SELECT * 
    FROM visitordetails1 
WHERE date_time BETWEEN DATE_SUB(CURDATE(), INTERVAL 3 DAY) 
        AND DATE_SUB(CURDATE(), INTERVAL 2 DAY) 

SQLFiddle

0

如果你想兩個日期之間的項目,你需要同時設置最小和最大:

SELECT * FROM vistordetails1 WHERE date_time >= (NOW() - INTERVAL 2880 MINUTE) AND date_time <= (NOW() - INTERVAL 1440 MINUTE) 
1

可以使用date()函數來獲取擺脫時間部分:

SELECT * 
FROM vistordetails1 
WHERE date_time >= (date(NOW()) - INTERVAL 2880 MINUTE) and 
     date_time < date(now()) 
0

不,這實際上是從時間開始1天后選擇條目(1。 1970年1月)。試試這個說法:

SELECT * FROM vistordetails1 
    WHERE date_time <= (NOW() - INTERVAL 1440 MINUTE) 
    AND date_time >= (NOW() - INTERVAL 2880 MINUTE) 
+0

也看看[這個答案](http://stackoverflow.com/a/7756832/1553481)更優雅,略有不同的方式。 – likeitlikeit 2013-05-08 01:44:45

0

這將考慮2整天:

select date(now()) as today, date_add(date(now()), interval -2 day) "2 days ago"; 

我使用的功能日期,說明你如何獲得一個完整的日期時間的日期部分。適應你的需求,你會到達那裏。