MySQL将时间转换为字符串(Grafana)

Posted

技术标签:

【中文标题】MySQL将时间转换为字符串(Grafana)【英文标题】:MySQL converting time to string (Grafana) 【发布时间】:2019-04-02 15:10:32 【问题描述】:

我在显示用户通过 Grafana 运行软件版本/硬件版本的次数时遇到了一些问题。以下查询在 mysql Workbench 中正常工作,但在 Grafana 中完成时,给出以下错误:列 time/time_sec 的类型无效,必须是时间戳或 unix 时间戳类型,得到:字符串 1536692387

我尝试通过 CAST 和 CONVERT 将 time_sec 转换为 DATETIME 类型,但没有成功。有人对如何处理这个问题有建议吗?谢谢。

这里是当前查询(通过workbench——变量在Grafana中定义):

SET @$swVersion = 'LATEST';
SET @$hwString = 'TXT';

SELECT 
    IF(COUNT(user) > 0, epochStartTime, NOW()) AS time_sec,
    COUNT(user) AS 'John Doe'
FROM
    table
WHERE
    STRCMP(user, 'Name') = 0
    AND swVersion IN (@$swVersion)
    AND hwString IN (@$hwString)

【问题讨论】:

【参考方案1】:

试试这个:

UNIX_TIMESTAMP(IF(COUNT(user) > 0, epochStartTime, NOW())) AS time_sec

在您的查询中。

【讨论】:

您好,感谢您的回复!在添加“UNIX_TIMESTAMP”之前,当计数大于 0 时,我得到了数字字符串。但添加后,结果变为 null 并给出相同的错误:列 time/time_sec 的类型无效,必须是时间戳或 unix 类型时间戳。 看起来您的数据中的 epochStartTime 已经是一个整数时间戳 - 仅将 UNIX_TIMESTAMP() 函数应用于 NOW():IF(COUNT(user) > 0, epochStartTime, UNIX_TIMESTAMP(NOW())) AS time_sec 成功了,非常感谢!我假设这是因为 NOW() 是不同的类型?

以上是关于MySQL将时间转换为字符串(Grafana)的主要内容,如果未能解决你的问题,请参考以下文章

如何将 MySQL“NOT IN”数组转换为整数

使用 Prometheus 和 Grafana 将秒转换为 HH:MM:SS

Grafana:使用字符串类型的 MySQL 表列作为图形的 X 轴

将 Grafana 连接到 MySQL 显示查询失败,为啥?

将日期字符串转换为 mysql 日期时间字段

grafana中的温度单位转换