我有一个带有字段日期戳(datetime)的mysql MyIsam表,我试图返回所有在过去3小时内都有日期戳的记录,但是将它分成10个块(所以对于这个例子,第一个组将是前18分钟等......)
有什么想法吗?这在mysql中是否可行?
答案 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小时内的秒数