我有一个字段,它以1h3m45s
或3m45s
格式发送时间
我想将其转换为分钟以绘制图表。
我尝试过
| eval ProcessingTime=replace(replace(replace(LoadTime,"h",":"), "m",":"),"s","")
| eval ProcessingTime=strptime(ProcessingTime,"%H:%M:%S")
但是它给出了空白字段。
编辑:
| eval time="1h34m56s" | eval ProcessingTime=strftime(strptime(time, "%Hh%Mm%Ss"),"%H:%M:%S")|convert dur2sec(ProcessingTime)| eval TimeinMin=(ProcessingTime)/60 | table time, ProcessingTime,TimeinMin
这给出了我期望的最小时间,但是如果我有时间= 34m56s,它什么也不会返回
能请你帮忙吗?
答案 0 :(得分:2)
非常接近,您可以使用convert dur2sec()
| eval ProcessingTime=replace(replace(replace(LoadTime,"h",":"), "m",":"),"s","")
| convert dur2sec(ProcessingTime)
如果不起作用,请删除转换行并发送ProcessingTIme
的值。它看起来应该像HH:MM:SS
格式
答案 1 :(得分:0)
rex
来营救!该查询处理可选的小时值。
| makeresults
| eval time="34m56s"
| rex field=time "(?:(?<hr>\d+)h)?(?<min>\d+)m(?<sec>\d+)s"
| eval hr=coalesce(hr,0)
| eval ProcessingTime=hr.":".min.":".sec
| convert dur2sec(ProcessingTime)
| eval TimeinMin=(ProcessingTime)/60
| table time, ProcessingTime,TimeinMin
答案 2 :(得分:0)