MySQL时间戳15分钟分组后Grafana转换显示异常求助
解决MySQL按15分钟分组后Grafana时间转换异常问题
问题原因
你当前SQL计算出的floor(unix_timestamp(timestamp)/(15*60))是15分钟时间间隔的序号,而非标准Unix时间戳(秒级)。Grafana将这个序号当作秒级时间戳转换时,因数值过小,自然会显示1970年的纪元起始时间。
正确解决方案
方案1:在SQL中直接转换为datetime类型
修改SQL,将间隔序号乘以15*60还原为对应时间间隔的起始Unix时间戳,再通过from_unixtime()转换为datetime格式,Grafana可直接识别:
select from_unixtime(floor(unix_timestamp(timestamp)/(15*60)) * (15*60)) as "Time" from Table;
方案2:保留数值型时间戳给Grafana转换
如果希望在Grafana中做转换,只需将间隔序号乘以900(15*60),得到正确的秒级时间戳后再转换:
select floor(unix_timestamp(timestamp)/(15*60)) * (15*60) as "Time" from Table;
之后在Grafana中执行transform > Convert field type > Field Time as Time,即可得到正确的时间。
验证示例
以你提供的正确时间2022-08-30 16:16:07为例:
- 其Unix时间戳为
1661856967 - 除以900取整得到
1846507 - 乘以900得到
1661856300 - 转换为datetime后是
2022-08-30 16:05:00,即该时间所属的15分钟间隔起始时间,符合分组需求。
内容的提问来源于stack exchange,提问作者user19050918
相关产品推荐
相关产品推荐

