Skip to content

Data Types

GreptimeDB supports the following data types:

Type nameDescriptionSynonymsSize
tinyint8-bit signed small integers between -128~1271 Byte
smallint16-bit signed big integers between -32768~327672 Bytes
int32-bit signed integers between -2147483648~2147483647integer4 Bytes
bigint64-bit signed big integers between -9223372036854775808~92233720368547758078 Bytes
varcharUTF-8 encoded stringstext
/string
/ char
The length of the strings
float32-bit IEEE754 floating point values4 Bytes
doubleDouble precision IEEE 754 floating point values8 Bytes
booleanBoolean values1 Byte
varbinaryVariable length binary valuesThe length of the data + 2 bytes
date32-bit date values4 Bytes
datetime64-bit datetime values8 Bytes
timestamp[(0/3/6/9)]64-bit timestamp values with optional precision.
For example, timestamp(0) represents timestamp type with seconds precision, timestamp(3) represents milliseconds precision, timestamp(6) for microseonds and timestamp(9) for nanoseconds. If no precision is given, the timestamp is in milliseconds precision by default.
8 Bytes

Unsigned version of integer types

int / tinyint / smallint / bigint also have unsigned version, and there corresponding value ranges are:

  • int unsigned: 0~4294967295
  • tinyint unsigned: 0~255
  • smallint unsigned: 0~65535
  • bigint unsigned: 0~18446744073709551615

Variable-sized type limitations

The max capacities of variable-sized type, such as string and varbinary are determined by their encodings and how storage engine handles them.

For example, string values are encoded into UTF-8. If all characters are 3-bytes lengthed, this field can store 715827882 characters. As for varbinary types, it can store 2147483647 bytes at most.

Choose the data type for timestamp column

GreptimeDB allows user to choose bigint or timestamp for timestamp index column. Both bigint and timestamp are interpreted as timestamp in millisecond precision.

SQL
# using TIMESTAMP as timestamp column data type
CREATE TABLE monitor (
    host STRING,
    ts TIMESTAMP, 
    cpu DOUBLE DEFAULT 0,
    memory DOUBLE,
    TIME INDEX (ts),
    PRIMARY KEY(host)) ENGINE=mito WITH(regions=1);

# using BIGINT as timestamp column data type is also allowed
CREATE TABLE monitor (
    host STRING,
    ts BIGINT, 
    cpu DOUBLE DEFAULT 0,
    memory DOUBLE,
    TIME INDEX (ts),
    PRIMARY KEY(host)) ENGINE=mito WITH(regions=1);
# using TIMESTAMP as timestamp column data type
CREATE TABLE monitor (
    host STRING,
    ts TIMESTAMP, 
    cpu DOUBLE DEFAULT 0,
    memory DOUBLE,
    TIME INDEX (ts),
    PRIMARY KEY(host)) ENGINE=mito WITH(regions=1);

# using BIGINT as timestamp column data type is also allowed
CREATE TABLE monitor (
    host STRING,
    ts BIGINT, 
    cpu DOUBLE DEFAULT 0,
    memory DOUBLE,
    TIME INDEX (ts),
    PRIMARY KEY(host)) ENGINE=mito WITH(regions=1);