我有一个 sql 表:日期 (Y-m-d)/时间 (00:00:00)/功率 (INT)
当我从内联日期选择器中选择一个日期时,我试图发布 3 个 HighCharts 图表(1-24 小时、一个月中的 2-31 天、一年中的 3-12 个月),我需要从中获取值要创建的图表的表格。
对于这一天,我需要每小时“100,200,300,200,300 等”的 24 个值。
这是“一天”的 PHP,但它不工作...
<?php
$choice = (isset($_POST['choice']))
? date("Y-m-d",strtotime($_POST['choice']))
: date("Y-m-d");
$con = mysql_connect("localhost","root","xxxxxx");
if (!$con) {
die('Could not connect: ' . mysql_error());
}
mysql_select_db("inverters", $con);
$sql = "SELECT HOUR(time), COUNT(power)
FROM feed
WHERE time = DATE_SUB('".$choice."', INTERVAL 24 HOUR)
GROUP BY HOUR(time)
ORDER BY HOUR(time)";
$res = mysql_query($sql) or die('sql='.$sql."\n".mysql_error());
$row = mysql_fetch_assoc($res);
echo $row['choice'].'<br />';
?>
这已被另一个人确认该代码不起作用,有人可以提供有用的解决方案来修复错误吗?
艾伦
最佳答案
目前,您的SELECT
只为您提供当前时刻之前恰好 24 小时发生的结果。你需要的是一个范围。 1 小时的示例(为清楚起见添加了缩进):
WHERE `time` BETWEEN
DATE_SUB('".$choice."', INTERVAL 24 HOUR)
AND DATE_SUB('".$choice."', INTERVAL 23 HOUR)
这样,您将获得 时间
在“现在 - 24 小时”和“现在 - 23 小时”的 1 小时范围内的结果。 BETWEEN运算符等同于:
WHERE `time` >= DATE_SUB('".$choice."', INTERVAL 24 HOUR)
AND `time` <= DATE_SUB('".$choice."', INTERVAL 23 HOUR)
关于php - 24小时值(value),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4342807/