if( ${$sens}{$i}->{"datediff"} ){ $dbColName=${$sens}{$i}->{"dbcolName"}; $unitFactor=${$sens}{$i}->{"unitfactor"}->{"$dbColName"}; $midnightDate=${$sens}{$i}->{"datediff"}; # date of day for which to calculate sum $midnightTime="00:00:00"; # starting from midnight $dayEndTime="23:59:59"; # Day end time # # Since the database stores dates in GMT we have to calculate what GMT time # corresponds to the local time "midnight" ($midnightDateGMT, $midnightTimeGMT)=timeConvert($midnightDate, $midnightTime, "GMT"); # Now calculate what GMT time corresponds to local time "end of day" ($midnightDate, $dayEndTime)=timeConvert($midnightDate, $dayEndTime, "GMT"); # Now select data that is between midnight(GMT) and end of day(GMT) $sql="SELECT SUM($dbColName) AS \"SUM\" FROM $table WHERE stationid = $stationId AND". " datetime>=\"$midnightDateGMT $midnightTimeGMT\" AND". " LEFT(datetime,10) <=\"$midnightDate $dayEndTime\" AND sensid=$sensorId"; @res=$dbh->selectrow_array($sql); $tmp=$res[0] * $unitFactor; $tmp=int($tmp*100)/100; ${$sens}{$i}->{"sensorval"}->{"$j"}->[0]->{$dbColName}=$tmp; }