使用 MySQL 的 Grafana 仪表板:我应该如何处理“%Y%m%d%H%i%s”的时间戳以用作面板的时间列?
Posted
技术标签:
【中文标题】使用 MySQL 的 Grafana 仪表板:我应该如何处理“%Y%m%d%H%i%s”的时间戳以用作面板的时间列?【英文标题】:Grafana dashboard using MySQL: how should I deal with timestamp of "%Y%m%d%H%i%s" to use as time column of panel? 【发布时间】:2021-09-04 18:59:24 【问题描述】:我想使用 Grafana 仪表板将我的 mysql 数据库表可视化为每小时图表。我正在使用的表具有以下属性,未提及的未使用的属性包括 PK:
SERVER_NAME varchar(250)
STAT_TYPE int(11)
STAT_DTM varchar(14)
CPU_MAX_USAGE int(11)
MEMORY_MAX_USAGE int(11)
重要的是STAT_DTM
。它的格式是"%Y%m%d%H%i%s"
,例如"20210621090000"
; 2021 年 6 月 21 日 09:00:00。我希望这是图表的 X 轴。 Grafana 指南说:
返回名为 time 或 time_sec (UTC) 的列,作为 unix 时间戳或 任何 sql 本机日期数据类型。您可以使用下面的宏。
所以我输入了unix_timestamp(date_format(str_to_date(substr(stat_dtm, 1, 10),'%Y%m%d%H'), '%Y-%m-%d %H:00:00'))
,但弹出了一个错误说db query error: query failed - please inspect Grafana server log for details
。
select
unix_timestamp(date_format(str_to_date(substr(stat_dtm, 1, 10),'%Y%m%d%H'), '%Y-%m-%d %H:00:00')) as 'time',
CPU_MAX_USAGE,
MEMORY_MAX_USAGE
from lcop.tb_stat_os_day
where stat_type = 60 and server_name = 'LDFSWAS1'
The Panel I'm currently working on
The result of the query above
如何正确设置时间戳并显示图表?不幸的是,无法修改表架构,如果需要,我可以提供任何其他信息。提前致谢。
【问题讨论】:
" .. unix 时间戳或任何 sql 本机日期数据类型" 在我看来它不必是 unix 时间戳? @FaNo_FN 是的,所以我也尝试了date_format(str_to_date(stat_dtm, '%Y%m%d%H%i%s'), '%Y%m%d%H%i%s')
,但我认为这个不太好用
实际上,使用该功能,您将使用 STR_TO_DATE
将 '20210621090000' 转换为 '2021-06-21 09:00:00' 然后使用 @987654333 将其转换回 '20210621090000' @..see here
【参考方案1】:
让我们在那里简化您的类型转换:
SELECT '20210621090000' as `src`,
UNIX_TIMESTAMP(STR_TO_DATE('20210621090000', '%Y%m%d%H%i%s')) as `dts`
STR_TO_DATE()
函数可以被赋予完整的格式,然后可以被赋予UNIX_TIMESTAMP
。 SUBSTR()
或 DATE_FORMAT()
没有必要让事情变得更困难??
【讨论】:
谢谢哥们,我走得太远了。这就像我想要的那样工作,而且要短得多。以上是关于使用 MySQL 的 Grafana 仪表板:我应该如何处理“%Y%m%d%H%i%s”的时间戳以用作面板的时间列?的主要内容,如果未能解决你的问题,请参考以下文章
如何在显示仪表板时在 Grafana 门户上启用 url 加密