1

嗨,我正在尝试对两天前数据库中的条目数进行行计数。我有下面的代码,它从现在到两天前获取数据,但我只想要两天前午夜到午夜数据库中所有条目的数据。

这是我从现在到两天前必须得到的代码。

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

我可以做这样的事情吗

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

6 回答 6

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
}
于 2013-05-08T01:37:16.610 回答
1
SELECT *
  FROM visitordetails1
WHERE date_time BETWEEN DATE_SUB(CURDATE(), INTERVAL 3 DAY) 
                    AND DATE_SUB(CURDATE(), INTERVAL 2 DAY)

SQLFiddle

于 2013-05-08T01:37:56.597 回答
1

您可以使用该date()功能摆脱时间组件:

SELECT *
FROM vistordetails1
WHERE date_time >= ( date(NOW()) - INTERVAL 2880 MINUTE ) and
      date_time < date(now())
于 2013-05-08T01:38:21.123 回答
0

如果您想要两个日期之间的项目,则需要设置最小值和最大值:

SELECT * FROM vistordetails1 WHERE date_time >= (NOW() - INTERVAL 2880 MINUTE) AND date_time <=  (NOW() - INTERVAL 1440 MINUTE)
于 2013-05-08T01:38:01.150 回答
0

不,这实际上会从时间开始后的 1 天(1970 年 1 月 1 日)开始选择条目。试试这个说法:

SELECT * FROM vistordetails1 
    WHERE date_time <= ( NOW() - INTERVAL 1440 MINUTE ) 
    AND date_time >= ( NOW() - INTERVAL 2880 MINUTE )
于 2013-05-08T01:38:33.397 回答
0

This will consider 2 full days:

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

I am using the function date to illustrate to you how to get the date part of a complete date time. Adapt to your needs and you will get there.

于 2013-05-08T01:41:33.667 回答