如何在Grafana MySQL查询中定义含未来时间的相对时间范围
解决方法
用数据库原生时间函数替代Grafana时间宏,摆脱顶部时间选择器干扰
原来的$__timeFrom和$__timeTo会强制读取顶部时间选择器的值,直接换成数据库自带的当前时间函数计算范围即可,不同数据库写法略有差异:- PostgreSQL示例:
SELECT date AS time, namespace, value FROM pnf_vnf_forecasting WHERE date BETWEEN CURRENT_TIMESTAMP - INTERVAL '180 days' AND CURRENT_TIMESTAMP + INTERVAL '30 days' AND namespace IN($PGW) ORDER BY time ASC - MySQL示例:
SELECT date AS time, namespace, value FROM pnf_vnf_forecasting WHERE date BETWEEN NOW() - INTERVAL 180 DAY AND NOW() + INTERVAL 30 DAY AND namespace IN($PGW) ORDER BY time ASC
- PostgreSQL示例:
开启面板「忽略时间过滤器」选项
在查询编辑器的「选项」区域,勾选「Ignore time filter」(忽略时间过滤器)。这一步会让Grafana不再自动附加顶部时间选择器的过滤条件,确保你SQL里定义的未来30天范围正常生效,不会被默认的“不查询未来时间”逻辑覆盖。额外注意:如果
date字段是字符串格式,要先转换成时间类型再做比较,比如PostgreSQL用TO_TIMESTAMP(date, 'YYYY-MM-DD HH:MI:SS'),MySQL用STR_TO_DATE(date, '%Y-%m-%d %H:%i:%s'),避免时间比较逻辑出错。
内容的提问来源于stack exchange,提问作者GGont
相关产品推荐
相关产品推荐

