tdengine 2.20版发布直接支持纳秒时间戳了,毫秒、微秒、纳秒,建库时需要用 precision "ms"、precision "us"、precision "ns" 来进行标注,如果传入的时间戳不满足位数位数要求则报错。做了一个简单的格式转换函数,利用string 切片实现了时间戳字串长度截断和补齐,解决时间戳不统一的问题。
func (taosd *TDengineDataSource) getTimeStampWithPrecision(tls string) string {
zerostr := "0000000000000000000"
len := len(tls)
var tlsprecision string
switch taosd.Section.config.precision {
case "s": // second
if len < 10 {
tlsprecision = tls + zerostr[0:(10-len)]
} else {
tlsprecision = tls[0:10]
}
case "ms": // milisecond
if len < 13 {
tlsprecision = tls + zerostr[0:(13-len)]
} else {
tlsprecision = tls[0:13]
}
case "us": // microsecond
if len < 16 {
tlsprecision = tls + zerostr[0:(16-len)]
} else {
tlsprecision = tls[0:16]
}
case "ns": // nanosecond
if len < 19 {
tlsprecision = tls + zerostr[0:(19-len)]
} else {
tlsprecision = tls[0:19]
}
}
return tlsprecision
}