数据类型

基本数据类型

IoTDB 支持以下六种数据类型:

  • BOOLEAN(布尔值)
  • INT32(整型)
  • INT64(长整型)
  • FLOAT(单精度浮点数)
  • DOUBLE(双精度浮点数)
  • TEXT(字符串)

浮点数精度配置

对于 FLOATDOUBLE 类型的序列,如果编码方式采用 RLETS_2DIFF ,可以在创建序列时通过 MAX_POINT_NUMBER 属性指定浮点数的小数点后位数。

例如,

  1. CREATE TIMESERIES root.vehicle.d0.s0 WITH DATATYPE=FLOAT, ENCODING=RLE, 'MAX_POINT_NUMBER'='2';

若不指定,系统会按照配置文件 iotdb-common.properties 中的 float_precision 项配置(默认为 2 位)。

数据类型兼容性

当写入数据的类型与序列注册的数据类型不一致时,

  • 如果序列数据类型不兼容写入数据类型,系统会给出错误提示。
  • 如果序列数据类型兼容写入数据类型,系统会进行数据类型的自动转换,将写入的数据类型更正为注册序列的类型。

各数据类型的兼容情况如下表所示:

序列数据类型支持的写入数据类型
BOOLEANBOOLEAN
INT32INT32
INT64INT32 INT64
FLOATINT32 FLOAT
DOUBLEINT32 INT64 FLOAT DOUBLE
TEXTTEXT

时间戳类型

时间戳是一个数据到来的时间点,其中包括绝对时间戳和相对时间戳。

绝对时间戳

IOTDB 中绝对时间戳分为二种,一种为 LONG 类型,一种为 DATETIME 类型(包含 DATETIME-INPUT, DATETIME-DISPLAY 两个小类)。

在用户在输入时间戳时,可以使用 LONG 类型的时间戳或 DATETIME-INPUT 类型的时间戳,其中 DATETIME-INPUT 类型的时间戳支持格式如表所示:

DATETIME-INPUT 类型支持格式

format
yyyy-MM-dd HH:mm:ss
yyyy/MM/dd HH:mm:ss
yyyy.MM.dd HH:mm:ss
yyyy-MM-dd HH:mm:ssZZ
yyyy/MM/dd HH:mm:ssZZ
yyyy.MM.dd HH:mm:ssZZ
yyyy/MM/dd HH:mm:ss.SSS
yyyy-MM-dd HH:mm:ss.SSS
yyyy.MM.dd HH:mm:ss.SSS
yyyy-MM-dd HH:mm:ss.SSSZZ
yyyy/MM/dd HH:mm:ss.SSSZZ
yyyy.MM.dd HH:mm:ss.SSSZZ
ISO8601 standard time format

IoTDB 在显示时间戳时可以支持 LONG 类型以及 DATETIME-DISPLAY 类型,其中 DATETIME-DISPLAY 类型可以支持用户自定义时间格式。自定义时间格式的语法如表所示:

DATETIME-DISPLAY 自定义时间格式的语法

SymbolMeaningPresentationExamples
Geraeraera
Ccentury of era (>=0)number20
Yyear of era (>=0)year1996
xweekyearyear1996
wweek of weekyearnumber27
eday of weeknumber2
Eday of weektextTuesday; Tue
yyearyear1996
Dday of yearnumber189
Mmonth of yearmonthJuly; Jul; 07
dday of monthnumber10
ahalfday of daytextPM
Khour of halfday (0~11)number0
hclockhour of halfday (1~12)number12
Hhour of day (0~23)number0
kclockhour of day (1~24)number24
mminute of hournumber30
ssecond of minutenumber55
Sfraction of secondmillis978
ztime zonetextPacific Standard Time; PST
Ztime zone offset/idzone-0800; -08:00; America/Los_Angeles
escape for textdelimiter
‘’single quoteliteral

相对时间戳

相对时间是指与服务器时间now()DATETIME类型时间相差一定时间间隔的时间。 形式化定义为:

  1. Duration = (Digit+ ('Y'|'MO'|'W'|'D'|'H'|'M'|'S'|'MS'|'US'|'NS'))+
  2. RelativeTime = (now() | DATETIME) ((+|-) Duration)+

The syntax of the duration unit

SymbolMeaningPresentationExamples
yyear1y=365 days1y
momonth1mo=30 days1mo
wweek1w=7 days1w
dday1d=1 day1d
hhour1h=3600 seconds1h
mminute1m=60 seconds1m
ssecond1s=1 second1s
msmillisecond1ms=1000_000 nanoseconds1ms
usmicrosecond1us=1000 nanoseconds1us
nsnanosecond1ns=1 nanosecond1ns

例子:

  1. now() - 1d2h //比服务器时间早 1 天 2 小时的时间
  2. now() - 1w //比服务器时间早 1 周的时间

注意:’+’和’-‘的左右两边必须有空格