Я пытаюсь построить граф данных, возвращенный из MySQL, используя фреймворк Highcharts. Ниже приведен запрос и функции форматирования:Группа DATE_FORMAT в SQL и группе возврата Unix Timestamps
function correlate_created_at_with_msg_vol($q, $time = NULL) {
global $db;
date_default_timezone_set('America/Chicago');
$q = mysqli_real_escape_string($db, $q);
$query = "SELECT unix_timestamp(created_at) AS date,";
$query .= " COUNT(tweet_id) AS count FROM `tweets`";
$query .= " WHERE tweet_text LIKE '%{$q}%'" ;
$query .= " GROUP BY created_at";
$query .= " LIMIT 20";
$tweets = mysqli_query($db, $query);
confirm_query($tweets);
return $tweets;
}
function format_data($q) {
$msg_vol = correlate_created_at_with_msg_vol($q);
while ($tweet = mysqli_fetch_array($msg_vol, MYSQL_ASSOC)) {
# had ot modify correlate_created_at_with_msg_vol()
# to no longer use unix timestamps
$date = $tweet['date'] * 1000;
$count = intval($tweet['count']);
$formatted[] = array($date, $count);
}
return $formatted;
}
в $ дата умножается на 1000 (в документации Highchart), чтобы изменить метку времени UNIX в миллисекундах, так как ЭПОХИ. Однако это нарушает мою часть моего запроса, поскольку они больше не сгруппированы до минуты. Как я могу настроить свой запрос так, чтобы все записи, которые произошли за минутный интервал, по-прежнему группировались во время временных меток unix?
Должен ли я сделать преобразование после SQL-запроса с помощью strtotime? Я все еще участвую, но я предполагаю, что это будет решение; к сожалению, из того, что я понимаю, выполнение процесса на стороне БД лучше для производительности. Не стесняйтесь исправить меня, если я ошибаюсь.
Я бы предпочел, чтобы БД выполняла DATE_FORMAT (created_at, '% Y-% m-% d% l:% i% p') и возвращала это с помощью строки, но так как мне нужна временная метка unix I не может найти способ сделать это.
Я открыт для любых предложений/отзывов/идей/критики. Спасибо.
P.S. Я планирую отказаться от mysqli в пользу PDO ... После того, как я заработаю этот проклятый график. ;)
Barmar, вы спасатель жизни! Большое вам спасибо, поскольку я сделал именно то, что я надеялся выполнить. – DroBuddy