本文正在参加「技术专题19期 漫谈数据库技术」活动
最近学到了一个很好用的数据可视化框架:Grafana,一下来脾气了,想把自己的nginx服务器日志分析一下,然后提交到mysql,然后再grafana上做展板,想想就有点小激动呢,也正是因为激动过头,把时间按照字符串的格式“YYYY-mm-dd HH:MM:SS”,存放到了MySQL数据库当中,结果,在使用grafana的时候死活出不来数据,而且不报错,只是提示说时间字段不存在(因为grafana数据展示必须需要设置一共时间字段,命名为 time),后来查看才发现不是没有时间字段,而是时间字段不是时间戳导致的,当场麻瓜了,数据不多,十万左右,感觉再从新导入添加时间戳字段不是不行,而是不想(嘿嘿嘿),所以就查了查,发现了下面的函数,做一个总结:
UNIX_TIMESTAMP
这个方法是今天主打的方法,可以直接将字符串时间转换为unix时间戳时间,解决了我grafana上的一大痛点,使用方式如下:
mysql> select unix_timestamp("2022-05-01") as stamp;
+------------+
| stamp |
+------------+
| 1651334400 |
+------------+
1 row in set (0.00 sec)
嗯哼,然后,就可以使用了
select unix_timestamp("2022-05-01") as "time", number from log_table;
这里要注意的是as time这种写法是grafana的一种固定写法,平常不建议使用和mysql有重合的关键字作为变量。
FROM_UNIXTIME
其实上一步已经完成了我的需求,可是感觉自己掌握的sql知识点太匮乏了(其实越往后越有这种感觉,感觉自己之前学的好浅),所以就有查了一下,发现了FROM_UNIXTIME,将时间戳转换为字符串时间的方法:
select from_unixtime(1651334400) as string_time;
+---------------------+
| string_time |
+---------------------+
| 2022-05-01 00:00:00 |
+---------------------+
1 row in set (0.04 sec)
两个正好一对儿,十分搭配。
大家还有啥宝藏小妙招吗,可以一起分享一下。
本文正在参加「技术专题19期 漫谈数据库技术」活动