将日期时间字段分组为块

时间:2011-02-03 13:08:50

标签: php mysql group-by

我有一个带有字段日期戳(datetime)的mysql MyIsam表,我试图返回所有在过去3小时内都有日期戳的记录,但是将它分成10个块(所以对于这个例子,第一个组将是前18分钟等......)

有什么想法吗?这在mysql中是否可行?

3 个答案:

答案 0 :(得分:3)

我认为这可行:

$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";

将差异除以3小时间隔(1080秒)的1/10。这给出了块0,1,2 ... 9,其中0表示前18分钟。

答案 1 :(得分:0)

不确定。因为我不是真正的MySQL专家,所以这是伪代码:

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

然后你有两列,“age”用于限制选择,“group”用于进一步细分。

答案 2 :(得分:0)

使用

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

10800是3小时内的秒数