我是php新手,我的时间/日期操作有问题。
我需要对某些商店的每日/每月/每年访问进行统计。
有一个带有“statistics”表和fields: "statistic_id" ( integer, primary key ) , "visitors" ( integer ), and "dateAndTime" ( timestamp )
的mysql数据库。我有一个表单,用户输入来到商店的访客数量,并使用now()函数将该数字与时间和日期一起插入数据库。
基本上我的数据库看起来像是:
statistic_id , visitors , timeAndDate <br />
1............, 3........., 2012-09-29 14:45:02 <br />
2............, 5........., 2012-09-29 14:46:31 <br />
3............, 2........., 2012-09-29 18:48:11 ...etc.
我需要做的是汇总并显示特定时间间隔内的所有访问者。
09h-12h ; 12h-15h ; 15h-18h ; 18h-21h
。因此,我需要在表格中显示所有这些间隔和每个访问者的数量。问题是我不知道如何提取这些间隔,然后获得他们的访客总和。我正在尝试我所知道的一切,但我找不到,但没有成功。此外,我还必须获取每月和每年的统计信息,因此如何从12 months
列timeAndDate
列然后sum all visitors for each month
获取所有{{1}}?
有谁知道如何做到这一点,并愿意详细解释我吗?感谢
答案 0 :(得分:5)
让访客在09:00至12:00之间
SELECT
SUM(`visitors`)
FROM
`my_table`
WHERE
HOUR(`timeAndDate`) BETWEEN 9 AND 12
按月访问
SELECT
MONTH(`timeAndDate`),
SUM(`visitors`)
FROM
`my_table`
GROUP BY
MONTH(`timeAndDate`)
按年吸引访客
SELECT
YEAR(`timeAndDate`),
SUM(`visitors`)
FROM
`my_table`
GROUP BY
YEAR(`timeAndDate`)
在表格中输出月份的简单PHP示例
<?php
// Connect to database
$db = mysqli_connect('localhost', 'root', 'root', 'test') or die('Could not connect to database');
// Prepare sql question
$sql = "SELECT
MONTHNAME(`timeAndDate`) AS `month`,
SUM(`visitors`) AS `visitors`
FROM
`test`
GROUP BY
MONTH(`timeAndDate`)";
// Query the database
$result = mysqli_query($db, $sql);
// Begin table
print '<table><thead><tr><th>Month</th><th>Visitors</th></tr></thead><tbody>';
// Loop result
while($row = mysqli_fetch_assoc($result)) {
print "<tr><td>{$row['month']}</td><td>{$row['visitors']}</td></tr>";
}
// End table
print '</tbody></table>';
?>
答案 1 :(得分:0)
在9和12之间的DATE_FORMAT(timeAndDate,'%k')
DATE_FORMAT:http://www.w3schools.com/sql/func_date_format.asp
答案 2 :(得分:0)
SELECT DATE(timeAndDate), SUM(visitors) FROM Table
WHERE
DATE_FORMAT(timeAndDate,'%k') BETWEEN 9 AND 12
AND YEAR(timeAndDate) = 2012
GROUP BY MONTH(timeAndDate)