- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 mysql 数据库,其中包含我的客户详细信息,我想在数组中显示每小时的访问量、页面 View 。我在下面给出了 mysql 查询。
<?php
$siteid=$_GET["site"];
$DB = mysqli_connect('localhost','username','password','databasename');
$Q = "SELECT time, COUNT(*), pw FROM clientstats WHERE siteid='$siteid' AND time > UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 26970 SECOND)) GROUP BY HOUR( FROM_UNIXTIME( `time`) ) ORDER BY time ASC";
$R = mysqli_query($DB,$Q);
//start loop
//while or foreach
while($row = mysqli_fetch_assoc($R)){
date_default_timezone_set('Asia/Kolkata');
$timestamp = $row['time'];
$timee = date('H', $timestamp);
$times = $row['COUNT(*)']+$row['wh'];
echo ",['$timee', {$row['COUNT(*)']}, $times]\r\n";
}
?>
其中 26970 是从午夜到现在经过的秒数。这段代码工作正常并输出一个像这样的数组
,['02', 2, 3] ,['02', 1, 2] ,['04', 1, 2] ,['05', 1, 2] ,['06', 2, 3]
这个数组结构是 ['HOUR', 访问次数, pw] 但问题是这不会连续显示每个小时的值,如 1,2,3,4,5,6.... 等。我想要显示每个小时的值。如果该小时的值为零,那么我想将该小时值输出为 ['hour', 0, 0],此外,第二个小时的上述输出加倍。如何纠正它。
请帮助我,提前致谢。
最佳答案
要使用 SELECT 语句获取从 MySQL 返回的结果,需要有一个行源来返回我们从中获取计数的表中“缺失”的小时值。
(从查询中获取此结果只是一种选择;我们可以采用不同的方法,并在客户端中执行此操作。例如,用我们想要的小时数填充数组,然后运行原始查询,并分配计数到适当的匹配数组元素。这个答案演示了我们如何让 MySQL 返回指定的结果。)
作为我们如何做到这一点的一个示例,下面是一个返回 24 行整数值 0 到 23 的查询。
SELECT 00 AS hr UNION ALL SELECT 01 UNION ALL SELECT 02 UNION ALL SELECT 03
UNION ALL SELECT 04 UNION ALL SELECT 05 UNION ALL SELECT 06 UNION ALL SELECT 07
UNION ALL SELECT 08 UNION ALL SELECT 09 UNION ALL SELECT 10 UNION ALL SELECT 11
UNION ALL SELECT 12 UNION ALL SELECT 13 UNION ALL SELECT 14 UNION ALL SELECT 15
UNION ALL SELECT 16 UNION ALL SELECT 17 UNION ALL SELECT 18 UNION ALL SELECT 19
UNION ALL SELECT 20 UNION ALL SELECT 21 UNION ALL SELECT 22 UNION ALL SELECT 23
我们可以将该查询包装在括号中,并在另一个查询中引用它来代替表。
SELECT i.hr
FROM ( -- 0 thru 23
SELECT 00 AS hr UNION ALL SELECT 01 UNION ALL SELECT 02 UNION ALL SELECT 03
UNION ALL SELECT 04 UNION ALL SELECT 05 UNION ALL SELECT 06 UNION ALL SELECT 07
UNION ALL SELECT 08 UNION ALL SELECT 09 UNION ALL SELECT 10 UNION ALL SELECT 11
UNION ALL SELECT 12 UNION ALL SELECT 13 UNION ALL SELECT 14 UNION ALL SELECT 15
UNION ALL SELECT 16 UNION ALL SELECT 17 UNION ALL SELECT 18 UNION ALL SELECT 19
UNION ALL SELECT 20 UNION ALL SELECT 21 UNION ALL SELECT 22 UNION ALL SELECT 23
) i
ORDER BY i.hr
还有其他方法可以返回整数集。此示例只是查询中包含的内联 View (派生表)的示例。这不依赖于数据库中的任何其他表。
如果数据库中有一个表,其中包含 24 行且整数值为 0 到 23,我们可以引用该表来代替内联 View 。
我们还可以向外部查询添加一个 WHERE
子句,以排除 hr
值晚于当前小时的行。
如果我们想返回两位数的小时(带前导零),我们可以在 SELECT 列表中使用表达式。有几种表达式可以实现这一目的。
SELECT RIGHT(CONCAT('0',i.hr),2) AS hh
FROM ( -- 0 thru 23
SELECT 00 AS hr UNION ALL SELECT 01 UNION ALL SELECT 02 UNION ALL SELECT 03
UNION ALL SELECT 04 UNION ALL SELECT 05 UNION ALL SELECT 06 UNION ALL SELECT 07
UNION ALL SELECT 08 UNION ALL SELECT 09 UNION ALL SELECT 10 UNION ALL SELECT 11
UNION ALL SELECT 12 UNION ALL SELECT 13 UNION ALL SELECT 14 UNION ALL SELECT 15
UNION ALL SELECT 16 UNION ALL SELECT 17 UNION ALL SELECT 18 UNION ALL SELECT 19
UNION ALL SELECT 20 UNION ALL SELECT 21 UNION ALL SELECT 22 UNION ALL SELECT 23
) i
WHERE i.hr <= HOUR(NOW())
ORDER BY i.hr
我们将返回的行与原始查询返回的计数“匹配”。我们可以使用外连接操作,以便在计数查询中没有匹配行时返回一个小时的行。
为了将“缺失”计数返回为零,我们执行条件测试,并将 NULL 值替换为 0。
SELECT RIGHT(CONCAT('0',i.hr,2)) AS hh
, IFNULL(t.cnt,0) AS visits
, IFNULL(t.pw,0) AS pw
FROM ( -- 0 thru 23
SELECT 00 AS hr UNION ALL SELECT 01 UNION ALL SELECT 02 UNION ALL SELECT 03
UNION ALL SELECT 04 UNION ALL SELECT 05 UNION ALL SELECT 06 UNION ALL SELECT 07
UNION ALL SELECT 08 UNION ALL SELECT 09 UNION ALL SELECT 10 UNION ALL SELECT 11
UNION ALL SELECT 12 UNION ALL SELECT 13 UNION ALL SELECT 14 UNION ALL SELECT 15
UNION ALL SELECT 16 UNION ALL SELECT 17 UNION ALL SELECT 18 UNION ALL SELECT 19
UNION ALL SELECT 20 UNION ALL SELECT 21 UNION ALL SELECT 22 UNION ALL SELECT 23
) i
LEFT
JOIN ( -- counts by hour
SELECT HOUR(FROM_UNIXTIME(s.time)) AS hr
, COUNT(*) AS cnt
, MAX(s.pw) AS pw
FROM clientstats s
WHERE s.siteid = '$siteid'
AND s.time >= UNIX_TIMESTAMP(DATE(NOW()))
AND s.time < UNIX_TIMESTAMP(NOW())
GROUP BY HOUR(FROM_UNIXTIME(s.time))
) t
ON t.hr = i.hr
WHERE i.hr <= HOUR(NOW())
ORDER BY i.hr ASC
<小时/>
有几种不同的查询将返回指定的结果。但要返回零计数,诀窍是要有一个行源来返回我们想要返回的小时值,即使这些小时值不存在于我们从中获取计数的表中。
关于php - 如何从mysql获取每小时的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42103786/
我有 0 小时、3 小时、12 小时、24 小时、48 小时的数据组……我想绘制这些数据的图表,以便保留时间的比例。 runs <- c(1:25) hours <- as.factor(c(0, 3
例如,如果我选择了时间:下午 3 点和小时数:5 小时,则得到 (8pm) 作为答案“ 最佳答案 let calendar = Calendar.current let date = calendar
我有一个包含两个日期时间字段的表单。用户输入日期 (yyyy-mm-dd) 和时间(3 个框;小时、分钟、上午/下午)。 出于某种原因,第一个没有保存为 24 小时制。 以下数据为输入结果: 2011
我一直在尝试使用导出单位进行计算,但到目前为止我还没有取得任何成果。 我已经尝试过mathjs ,但如果我输入 1 小时 * 1 英里/小时,我会得到 UnsupportedTypeError: Fu
我有两组要运行的 cronjob。第一个应该每 3 小时运行一次,第二个也应该每 3 小时运行一次,但比第一组晚一个小时。什么是正确的语法? // every 3 hours 17 */3 * *
我知道 AWS 中的预留实例更多的是计费而不是实际实例——它们没有附加到实际实例——我想知道: 如果我在特定区域和可用区中购买特定时间的预留实例 - 如果我每天 24 小时使用单个实例与运行 24 个
我试过: seq( from=as.POSIXct("2012-1-1 0", tz="UTC"), to=as.POSIXct("2012-1-3 23", tz="UTC"),
我有一个带有“日期”列的表。我想按小时分组指定日期。 最佳答案 Select TO_CHAR(date,'HH24') from table where date = TO_DATE('2011022
我知道如何在 SQL (SQL Server) 中获取当前日期,但要获取当天的开始时间: select dateadd(DAY, datediff(day, 0, getdate()),0) (res
我正在尝试在游戏之间创建一个计时器,以便用户在失去生命后必须等待 5 分钟才能再次玩游戏。但是我不确定最好的方法是什么。 我还需要它来防止用户在“设置”中编辑他们的时间。 实现这一目标的最佳方法是什么
我的查询有误。该错误显示预期的已知函数,得到“HOUR”。如果我删除这部分,查询将正常工作 (AND HOUR({$nowDate}) = 11) SELECT c FROM ProConvocati
var d1 = new Date(); var d2 = new Date(); d2.setHours(d1.getHours() +01); alert(d2); 这部分没问题。现在我试图在 (
我正在构建一个用于练习的基本时钟应用程序,但出于某种原因,时间不会自动更改为最新的分钟或小时。例如,当前时间是 17:56,但它显示的是 17:54,这是我打开应用程序的最后时间。 NSDate *n
我创建了一张图片,我想将其用作页面的 hr。当它被上传时,它一直向左对齐。我希望它居中,在标题下。这是我的 CSS 代码: .section-underline { height: 35px
这个问题已经有答案了: Getting difference in seconds from two dates in JavaScript (2 个回答) 已关闭 4 年前。 我想计算两个具有不同格
我需要计算到某个日期/时间的剩余时间(天/小时)。 但是,我没有使用静态日期。 假设我在 每个星期日 的 17:00 有一个事件。我需要显示到下一个事件的剩余时间,即即将到来的星期日 17:00。 我
我正在执行这个脚本: SELECT EXTRACT(HOUR FROM TIMEDIFF('2009-12-12 13:13:13', NOW())); 我得到:-838。这是提取时 MySQL 可以
复制代码 代码如下: /** * 小时:分钟的正则表达式检查<br> * <br> * @param pInput 要检查的字符串 * @return boolean 返
连wifi5元/小时 独领风骚 朕好帅 今晚你是我的人 十里桃花 高端定制厕所VP专用 一只老母猪 在家好无聊 你爹的wifi 密码是叫爸爸全拼 关晓彤和鹿晗分手了吗 蹭了我的
我有以下数据框列: 我需要将 csv 列中的对象字符串数据转换为总秒数。 示例:10m -> 600s 我试过这段代码: df.duration = str(datetime.timedelta(df
我是一名优秀的程序员,十分优秀!