Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用SQL(PHP)统计日期范围内的点击次数_Php_Sql_Date Range - Fatal编程技术网

使用SQL(PHP)统计日期范围内的点击次数

使用SQL(PHP)统计日期范围内的点击次数,php,sql,date-range,Php,Sql,Date Range,我想根据日期范围内的每日级别计算所有点击次数 SELECT count(date) as clicks, date FROM views WHERE uid = $id AND date BETWEEN $from_dt AND $to_dt group by date ORDER BY date DESC; 假设我想计算“2013-05-01”-“2013-05-30”之间的所有点击次数,并希望以下结果如下: date clicks 2013-05-01

我想根据日期范围内的每日级别计算所有点击次数

SELECT count(date) as clicks, date FROM views 
WHERE uid = $id AND date BETWEEN $from_dt AND $to_dt 
group by date ORDER BY date DESC;
假设我想计算“2013-05-01”-“2013-05-30”之间的所有点击次数,并希望以下结果如下:

date            clicks
2013-05-01      50
2013-05-02      60
2013-05-03      65
2013-05-04      0
etc...
目前,我有以下SQL调用

SELECT count(date) as clicks, date FROM views WHERE uid = $id group by date ORDER BY date DESC
这很好,唯一的问题是,我没有得到日期范围内的所有日期,但只有有点击的日期。我应该能够得到所有的日子,也就是有0次点击的日子


希望有人能帮忙

试着用
中间的
子句

SELECT * FROM table_name WHERE column_name BETWEEN start_date AND end_date

尝试使用
BETWEEN
子句

SELECT * FROM table_name WHERE column_name BETWEEN start_date AND end_date

尝试这样做,因为现在您正在获取日期范围内的值

SELECT count(date) as clicks, date FROM views 
WHERE uid = $id AND date BETWEEN $from_dt AND $to_dt 
group by date ORDER BY date DESC;

此外,仅当您的表在特定日期有任何记录时,此查询才会返回计数。

尝试这样做,因为现在您正在获取日期范围内的值

SELECT count(date) as clicks, date FROM views 
WHERE uid = $id AND date BETWEEN $from_dt AND $to_dt 
group by date ORDER BY date DESC;
SELECT count(date) as clicks, date 
FROM views 
WHERE uid = $id
  AND date between 'date1' and 'date2'
group by DAY(date)
ORDER BY date DESC

此外,仅当您的表在特定日期有任何记录时,此查询才会返回计数。

因为您只从有单击的天数中获取结果,所以在没有单击的天数中不会获得任何结果。你要么

SELECT count(date) as clicks, date 
FROM views 
WHERE uid = $id
  AND date between 'date1' and 'date2'
group by DAY(date)
ORDER BY date DESC
A) 生成日期列表并返回每天的点击次数。 近似


B) 如果在SQL结果集中找不到日期,则在PHP中枚举每天,并在输出中插入0条目,而不是使用结果行作为输出。您可以使用将一天一次添加到时段开始时间
DateTime
,并将其格式化为字符串,以对照结果日期进行检查。

由于您仅从有单击的日期获得结果,因此在没有单击的日期内,您将无法获得任何结果。你要么

A) 生成日期列表并返回每天的点击次数。 近似

B) 如果在SQL结果集中找不到日期,则在PHP中枚举每天,并在输出中插入0条目,而不是使用结果行作为输出。您可以使用将一天一次添加到时段开始时间
DateTime
,并将其格式化为字符串,以对照结果日期进行检查。

尝试以下操作:

select sum(clicks) as total_clicks,date from views where uid='$id' AND (date BETWEEN $from_dt AND $to_dt) group by date order by date desc
试试这个:

select sum(clicks) as total_clicks,date from views where uid='$id' AND (date BETWEEN $from_dt AND $to_dt) group by date order by date desc


你的意思是你只得到日期列中的日期?或者你没有通过0点击得到2012-05-04,这真的很奇怪?你的数据库怎么能返回你甚至没有的数据呢。如果有几天没有显示,这意味着没有数据,您可以很容易地将其添加到PHP代码中,以显示这些日期,其中包含0个计数。您的意思是只显示日期列中的日期?或者你没有通过0点击得到2012-05-04,这真的很奇怪?你的数据库怎么能返回你甚至没有的数据呢。如果有几天没有显示,这意味着没有数据,您可以很容易地将其添加到PHP代码中,以显示这些日期,其中包含0个计数。这可能是重复的,但我认为他希望所有日期的结果,而不仅仅是他在db中拥有的日期。而且我没有给你-1个btw。不起作用。它应该返回日期范围内的所有日期,并计算当天的点击次数。这个例子只返回有点击的天数:-)不,但你的例子仍然不起作用-所以这是同一个“问题”:-)你们两个不理解对方,他希望查询返回范围内的所有日期,而不仅仅是他在数据库中的日期。@Mr.Alien我同意,我在其他答案中也评论了这一点。这很好,虽然我认为他想要的是所有日期的结果,而不仅仅是他在db中的那些日期。而且我没有给你-1个btw。不起作用。它应该返回日期范围内的所有日期,并计算当天的点击次数。这个例子只返回有点击的天数:-)不,但你的例子仍然不起作用-所以这是同一个“问题”:-)你们两个不理解对方,他希望查询返回范围内的所有日期,而不仅仅是他在数据库中的日期。@Mr.Alien我同意,我在其他答案中也评论了这一点。不起作用。它应该返回日期范围内的所有日期,并计算当天的点击次数。该示例仅返回有任何单击的天数:-)不,它返回以DB为单位的日期!你不能指望查询是智能的,并为你做其余的日期。您必须首先查找所有日期(使用mysql中的日期函数),然后检查每个日期的计数。或者像有人在php中建议的那样,为数据库中不存在的日期设置0。不起作用。它应该返回日期范围内的所有日期,并计算当天的点击次数。该示例仅返回有任何单击的天数:-)不,它返回以DB为单位的日期!你不能指望查询是智能的,并为你做其余的日期。您必须首先查找所有日期(使用mysql中的日期函数),然后检查每个日期的计数。或者像有人在php中建议的那样,为数据库中不存在的日期设置0。不起作用。它应该返回日期范围内的所有日期,并计算当天的点击次数。该示例仅返回有任何单击的天数:-)@simontomsen不仅如此。无论您编写什么查询,只有当表中有数据时,它才会返回。在这种情况下,您需要单独生成所有日期,然后获取日期的计数。不起作用。它应该返回日期范围内的所有日期,并计算当天的点击次数。该示例仅返回有任何单击的天数:-)@simontomsen不仅如此。无论您编写什么查询,只有当表中有数据时,它才会返回。在这种情况下,您需要单独生成所有日期,然后您应该获得该日期的计数。