2013-05-08 113 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"; 

我使用的功能日期,说明你如何获得一个完整的日期时间的日期部分。适应你的需求,你会到达那里。