我有时间以Unix格式存储
int
. 我想按1天的时间间隔(即86400秒)对结果进行分组。
样本数据
timestamp | state
+++++++++++++++++++
1540427604 | ABC
1540770300 | PQR
1540770050 | PQR
1540751300 | ABC
我想把
state
按每个86400的周期,即如果有人要求从1540425600(即2018年10月25日)到1540771200(即2018年10月29日),则输出应为
range | state | count
++++++++++++++++++++++++++++++++++++++++++
1540425600 - 1540512000 | ABC | 1
1540684800 - 1540771200 | ABC | 1
1540684800 - 1540771200 | PQR | 2
我试过这么多东西,但我觉得这一个更接近……
select
concat(86400*floor(timestamp /86400), '-', 86400*floor(timestamp/86400) + 86400) as `range` , count(state)
from MT
where timestamp between MINDATE AND MAXDATE
group by `range` order by `range`;
但我得到的输出并不是以通过的心态或心态的倍数开始的…但它的范围是86400。我希望范围应该总是从mmindate开始,如果存在这样的记录,或者在mmindate*86400的muliple中。
请帮忙。