Группировка полей даты и времени в чанки - PullRequest
1 голос
/ 03 февраля 2011

У меня есть MySQL-таблица MySQL с полем datetamp (datetime), я пытаюсь вернуть все записи, у которых есть datestamp за последние 3 часа, но сгруппировать ее в 10 блоков (так что для этой группы примеров один будетпервые 18 минут и т.д ...)

Есть идеи?Возможно ли это в MySQL?

Ответы [ 3 ]

3 голосов
/ 03 февраля 2011

Я думаю, что это может работать:

$t = date("U",strtotime("-3 Hours"));
$sql = "SELECT *, FLOOR((UNIX_TIMESTAMP(datestamp) - ".$t.") / 1080) as chunk 
    FROM table WHERE UNIX_TIMESTAMP(datestamp) > '".$t."' GROUP BY chunk";

Разделите разницу на 1/10 3-часового интервала (1080 секунд). Это дает куски 0,1,2 ... 9, где 0 означает первые 18 минут.

0 голосов
/ 03 февраля 2011

использовать как

   SELECT SUM(myfields)..... FROM mytable  
    WHERE mydate >= DATE_SUB( NOW() , INTERVAL 3 HOUR) 
    GROUP BY FLOOR((UNIX_TIMESTAMP() - UNIX_TIMESTAMP(mydate) ) / 10800)

10800 - это число секунд в 3 часах

0 голосов
/ 03 февраля 2011

Конечно.Поскольку я на самом деле не эксперт по MySQL, это псевдокод:

SELECT ..., (now() - datestamp) AS age, age / 600 AS group, ...

Затем у вас есть два столбца: «возраст», который вы используете для ограничения выбора, и «группа», которая далее подразделяет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...