Grafana中$__from与$__to变量时区问题:期望使用仪表板时间
Grafana 时间变量适配仪表板时区问题解决
问题场景
当前编写的SQL查询WHERE子句为固定时间范围:
year BETWEEN 2023 AND 2023 AND month BETWEEN 05 AND 05 AND day BETWEEN 10 AND 10 AND hour BETWEEN 13 AND 13
尝试替换为Grafana的$__from/$__to变量时,发现$__from:date:HH返回浏览器时区的小时,而$__from:date却返回仪表板时区的日期,希望所有时间格式提取都使用仪表板时区。
解决方法
配置数据源时区
进入Grafana数据源设置页面,找到「Time zone」选项,选择「Use dashboard time zone」。保存后,所有基于该数据源的时间变量格式(如$__from:date:HH)都会自动使用仪表板设置的时区,无需额外修改变量。手动指定时区格式
如果无法修改数据源配置,可以在变量格式中直接指定仪表板对应的时区,格式示例:$__from:date:HH:"Asia/Shanghai"将
Asia/Shanghai替换为你的仪表板实际时区标识(如Europe/London)。基于时间戳转换(适用于SQL数据源)
利用$__from的毫秒级时间戳,结合数据库的时区转换函数提取对应时区的时间字段。以MySQL为例:hour BETWEEN DATE_FORMAT(CONVERT_TZ(FROM_UNIXTIME($__from/1000), 'UTC', 'Asia/Shanghai'), '%H') AND DATE_FORMAT(CONVERT_TZ(FROM_UNIXTIME($__to/1000), 'UTC', 'Asia/Shanghai'), '%H')这里通过
CONVERT_TZ将UTC时间转换为仪表板时区,再用DATE_FORMAT提取小时。
内容的提问来源于stack exchange,提问作者Srki
相关产品推荐
相关产品推荐

