我有一个表格,用于按多个网站的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的这种日期检查并不好。
答案 0 :(得分:2)
你说你想要每个月的所有独立访客。但是,我会将您的查询描述为每月获取所有一次性访问者。如果是这样,您似乎需要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'