计算每月唯一身份访问者以显示在图表上
counting unique monthly visitors to display on graph
我有一个 table 可以通过 IP 地址、首次访问日期和最后一次访问日期记录多个网站的访问者。两个日期都是日期时间格式,如 2016-08-07 12:14:44
。每条记录都特定于一个网站引用。
我正在尝试按年份和月份列出过去 6 个月,例如 (Y-m)
2016-08
2016-07
2016-06
等...
我已经设法做到了这一点,尽管我在计算不同访问者的代码上苦苦挣扎,这是我目前所拥有的:
$this_month = date('Y-m');
$count = mysqli_query($conn, "SELECT COUNT(ip_address)) as count FROM `all_website_stats` WHERE `website_ref` = '$show_website_ref' AND EXTRACT(YEAR_MONTH FROM date_first_viewed) = '$this_month' AND `date_first_viewed` = `date_last_viewed`");
$rowcount=mysqli_num_rows($count);
echo $rowcount;
这将执行 6 次以获得未返回的访问者的最终计数。尽管此代码返回错误。当我设法让它工作时,它只计算了 1
或 0
,这是不正确的。
它在我添加 date_first_viewed = date_last_viewed
后显示错误,我猜这可能是错误的。虽然我需要确保 date_first_visited
与数据库中的 date_last_visited
相同,但结果是回头客。
有人可以在这里指出正确的方向并让我知道我做错了什么吗?我不太喜欢用 MySQL 进行此类日期检查。
你说你想要每个月的所有唯一身份访问者。但是,我会将您的查询描述为每月获取所有一次性访问者。如果是这样,您似乎需要 GROUP BY
:
SELECT EXTRACT(YEAR_MONTH FROM date_first_viewed) as yyyymm,
COUNT(ip_address)) as count
FROM `all_website_stats` aws
WHERE `website_ref` = '$show_website_ref' AND
`date_first_viewed` = `date_last_viewed`
GROUP BY EXTRACT(YEAR_MONTH FROM date_first_viewed);
您可以在 WHERE
子句中添加条件以指定返回行的时间段。
WHERE
子句看起来像这样:
WHERE date_first_viewed >= '2016-01-01'
我有一个 table 可以通过 IP 地址、首次访问日期和最后一次访问日期记录多个网站的访问者。两个日期都是日期时间格式,如 2016-08-07 12:14:44
。每条记录都特定于一个网站引用。
我正在尝试按年份和月份列出过去 6 个月,例如 (Y-m)
2016-08
2016-07
2016-06
等... 我已经设法做到了这一点,尽管我在计算不同访问者的代码上苦苦挣扎,这是我目前所拥有的:
$this_month = date('Y-m');
$count = mysqli_query($conn, "SELECT COUNT(ip_address)) as count FROM `all_website_stats` WHERE `website_ref` = '$show_website_ref' AND EXTRACT(YEAR_MONTH FROM date_first_viewed) = '$this_month' AND `date_first_viewed` = `date_last_viewed`");
$rowcount=mysqli_num_rows($count);
echo $rowcount;
这将执行 6 次以获得未返回的访问者的最终计数。尽管此代码返回错误。当我设法让它工作时,它只计算了 1
或 0
,这是不正确的。
它在我添加 date_first_viewed = date_last_viewed
后显示错误,我猜这可能是错误的。虽然我需要确保 date_first_visited
与数据库中的 date_last_visited
相同,但结果是回头客。
有人可以在这里指出正确的方向并让我知道我做错了什么吗?我不太喜欢用 MySQL 进行此类日期检查。
你说你想要每个月的所有唯一身份访问者。但是,我会将您的查询描述为每月获取所有一次性访问者。如果是这样,您似乎需要 GROUP BY
:
SELECT EXTRACT(YEAR_MONTH FROM date_first_viewed) as yyyymm,
COUNT(ip_address)) as count
FROM `all_website_stats` aws
WHERE `website_ref` = '$show_website_ref' AND
`date_first_viewed` = `date_last_viewed`
GROUP BY EXTRACT(YEAR_MONTH FROM date_first_viewed);
您可以在 WHERE
子句中添加条件以指定返回行的时间段。
WHERE
子句看起来像这样:
WHERE date_first_viewed >= '2016-01-01'