我想选择一天中的特定时段(15分钟)然后我只想获取过去一年中每天的历史数据。我根本不知道将INTERVAL 1 DAY
放在MySQL中的哪个位置。我想从(2012-10-15到2013-10-15)获取数据。
所以这是我的示例代码:
select *, FROM_UNIXTIME(timestamp/1000000000)
FROM pulsars
WHERE timestamp between UNIX_TIMESTAMP('2013-10-15 02:00:00')*1e9
AND UNIX_TIMESTAMP('2013-10-15 02:15:00')*1e9
AND name = 'GEMINGA'
ORDER by timestamp
LIMIT 0,100000000
答案 0 :(得分:1)
select [...]
from pulsars
where time(FROM_UNIXTIME(timestamp)) between time('02:00:00') and time('02:15:00')
and name = 'GEMINGA'
and timestamp between unix_timestamp('2012-10-15') and unix_timestamp('2013-10-15')
group by date(FROM_UNIXTIME(timestamp));
time()
函数将仅从您的时间戳中提取白天。我将日期转换为where子句中的unix_timestamp,因为我猜时间戳有索引,因此查询会更快。按天分组每天给出一行。由于我不知道你的数据,你必须自己做的选择中的聚合函数。
如果您选择每一天,请按小组分开,并每天使用timestamp between unix_timestamp(select_date) and unix_timestamp(select_date + interval 1 day)
。