GNU awk has some built-in time functions:
gawk '{print strftime("%F %T", $1), $2, $3, $4}' <<END
1234567890 foo bar baz
END
2009-02-13 18:31:30 foo bar baz
You'll have to escape those double quotes somehow in your gigantic double-quoted shell command. and since you're sorting based on the date-time, use a format like "%Y%m%d-%H%M%S"
Since awk can do what grep and sed do, I'd fold those commands into awk to reduce the pipeline a bit. You can decide if it improves or reduces maintainability.
I'm not familiar enough with PHP to know if it can handle the extra whitespace shown here:
$result = shell_exec(
"gawk -F ';' '
! /SERVICE ALERT/ {next}
{gsub(/ SERVICE ALERT:/, ";"); sub(/^./, ""); gsub(/\]/,""); $1=$1}
/WARNING|CRITICAL/ {print strftime("%F %T", $1),$2,$3,$4}
' /home/den/-".$date."-00.log | sort | uniq -c | sort -nr | head -10"
);