Hmm, I haven't gone over this with a fine-tooth comb, but do you really need to have those
`report pattern...` lines inside a for loop? The only variable inside those two lines is
$date, which appears to be a function of other variables that are set outside the for loop. In other words, are you executing the exact same system call in those backticks each time through the loop? (Maybe the debugger or profiler would be able to tell you? I don't really know.) If that's the case, you might want to move those lines outside of the loop? Or maybe you have a reason for calling the same exact command several times. Or maybe I'm just missing the point completely. *shrug*
You also mentioned "SQL queries" and updating a database. There's no SQL in this script at all. Perhaps it's in one of the external programs? Regardless, if you're not using placeholders when updating your database, you may want to consider doing so. That'll save time when interacting with the database.
--
There are 10 kinds of people -- those that understand binary, and those that don't.