如何在Grafana中用SQL查询power_station表过去30天的数据
SQL问题排查与正确写法
现有代码错误说明
- 第一段SQL错误:
CURDATE()为无参函数,不支持传入installed字段作为参数,且WHERE子句缺少比较运算符,语法不合法无法执行。 - 第二段SQL错误:
DATEADD、getdate()为SQL Server专属语法,若使用其他数据库(如MySQL、PostgreSQL)会报函数不存在的错误。
分场景正确写法
MySQL/MariaDB 环境
SELECT * FROM power_station WHERE installed >= DATE_SUB(CURDATE(), INTERVAL 30 DAY) AND installed <= CURDATE();
SQL Server 环境
SELECT * FROM power_station WHERE installed >= DATEADD(day,-30, GETDATE()) AND installed <= GETDATE()
PostgreSQL 环境
SELECT * FROM power_station WHERE installed >= CURRENT_DATE - INTERVAL '30 days' AND installed <= CURRENT_DATE;
注:如果需要统计精确到时分秒的近30天数据,将对应代码中的日期函数替换为返回datetime类型的时间函数即可(如MySQL把
CURDATE()换成NOW())。
Grafana 专属优化写法
在Grafana中使用时可直接调用内置时间宏,可联动面板的时间选择控件,无需手动写死时间范围:
SELECT * FROM power_station WHERE $__timeFilter(installed)
内容的提问来源于stack exchange,提问作者Antoine Dacremont
相关产品推荐
相关产品推荐

