24 hours of values

后端 未结 3 1744
离开以前
离开以前 2021-01-25 17:38

I have a sql table : date (Y-m-d) / time (00:00:00) / power (INT)

When I select a date from an inline datepicker, I am trying to post 3 HighCharts graph (one-24 hours, t

相关标签:
3条回答
  • 2021-01-25 18:00

    You need a loop to walk over the rows:

    $sql = "
    SELECT HOUR(time) as h, power
    FROM feed 
    WHERE date = '".$choice."' 
    ORDER BY HOUR(time)"; 
    
    $res = mysql_query($sql) or die('sql='.$sql."\n".mysql_error()); 
    
    while($row = mysql_fetch_assoc($res)) {
        echo $row['h'].":".$row['power']'<br />'; 
    }
    

    This will give you the power per day for a given month:

    $sql = "
    SELECT DAY(date) as d, SUM(power) as powerday
    FROM feed 
    WHERE MONTH(date) = '".$month."' 
    GROUP BY DAY(date) 
    ORDER BY DAY(date)"; 
    
    $res = mysql_query($sql) or die('sql='.$sql."\n".mysql_error()); 
    
    while($row = mysql_fetch_assoc($res)) {
        echo $row['d'].":".$row['powerday']'<br />'; 
    }
    
    0 讨论(0)
  • 2021-01-25 18:04

    At the moment, your SELECT gives you only the results which happened exactly 24 hours before the current moment. What you need is a range. Example for 1 hour (indentation added for clarity):

    WHERE `time` BETWEEN 
       DATE_SUB('".$choice."', INTERVAL 24 HOUR) 
       AND DATE_SUB('".$choice."', INTERVAL 23 HOUR) 
    

    This way, you'll get results with time in the 1-hour range of "now - 24 hours" and "now - 23 hours". The BETWEEN operator is equivalent to this:

    WHERE `time` >= DATE_SUB('".$choice."', INTERVAL 24 HOUR)
       AND `time` <= DATE_SUB('".$choice."', INTERVAL 23 HOUR) 
    
    0 讨论(0)
  • 2021-01-25 18:17

    Thank you everyone for all your help !

    The problem was in the first string, I only had to change the date format in addition to your wonderful examles !

    $choice = (isset($_POST['choice'])) ? date("m",strtotime($_POST['choice'])) : date("m"); 
    

    Thank You Very Much !

    Alan

    0 讨论(0)
提交回复
热议问题