本文将介绍Fluss所有的数据类型。
数据类型
数据类型 | 描述 |
BOOLEAN | 布尔值,可能具有三值逻辑:TRUE、FALSE 或 UNKNOWN。 |
TINYINT | 字节有符号整数,取值范围为 -128 到 127。 |
SMALLINT | 2 字节有符号整数,取值范围为 -32,768 到 32,767。 |
INT | 4 字节有符号整数,取值范围为 -2,147,483,648 到 2,147,483,647。 |
BIGINT | 8 字节有符号整数,取值范围为 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807。 |
FLOAT | 4 字节单精度浮点数。 |
DOUBLE | 8 字节双精度浮点数。 |
CHAR(n) | 固定长度字符串,其中 n 表示字符数。n 的取值范围为 1 到 Integer.MAX_VALUE(包括两端)。 |
STRING | 可变长度字符串。 |
DECIMAL(p, s) | 具有固定精度和小数位数的十进制数,其中 p 表示数字总位数(精度),s 表示小数点后位数(小数位数)。p 的取值范围为 1 到 38(包括两端),s 的取值范围为 0 到 p(包括两端)。 |
DATE | 表示日期,格式为年-月-日,取值范围为 0000-01-01 到 9999-12-31。与 SQL 标准相比,起始年份从 0000 开始。 |
TIME | 不带时区的时间,默认不包含小数秒。格式为小时:分钟:秒,取值范围为 00:00:00 到 23:59:59。与 SQL 标准相比,不支持闰秒(如 23:59:60 和 23:59:61),语义更接近 java.time.LocalTime。 |
TIME(p) | 不带时区的时间,其中 p 表示小数秒的位数(精度)。p 的取值范围为 0 到 9(包括两端)。格式为小时:分钟:秒[.小数秒],取值范围为 00:00:00.000000000 到 23:59:59.999999999。 |
TIMESTAMP | 不带时区的时间戳,默认包含 6 位小数秒。格式为年-月-日 小时:分钟:秒[.小数秒],取值范围为 0000-01-01 00:00:00.000000 到 9999-12-31 23:59:59.999999。与 SQL 标准相比,不支持闰秒。该类型在存储时仅保存时间的字面值,不包含任何时区信息。因此,在不同会话时区下查询时,其显示结果始终保持一致,不会因时区设置而发生变化。 |
TIMESTAMP(p) | 不带时区的时间戳,其中 p 表示小数秒的位数(精度)。p 的取值范围为 0 到 9(包括两端)。格式为年-月-日 小时:分钟:秒[.小数秒],取值范围为 0000-01-01 00:00:00.000000000 到 9999-12-31 23:59:59.999999999。该类型在存储时仅保存时间的字面值,不包含任何时区信息。因此,在不同会话时区下查询时,其显示结果始终保持一致,不会因时区设置而发生变化。 |
TIMESTAMP_LTZ | 带本地时区的时间戳,默认包含 6 位小数秒。格式为年-月-日 小时:分钟:秒[.小数秒] 时区,取值范围为 0000-01-01 00:00:00.000000 到 9999-12-31 23:59:59.999999。与 SQL 标准相比,不支持闰秒。该类型在存储时以自 1970-01-01 00:00:00 UTC 起的微秒数(UTC 时间戳)保存,不记录原始时区 ID,仅保留绝对时间点。在显示或解析时,系统会根据当前会话的时区将其转换为对应的本地时间进行展示。因此,在不同时区的会话中查询时,其显示结果可能因时区不同而不一样。 |
TIMESTAMP_LTZ(p) | 带时区的时间戳,其中 p 表示小数秒的位数(精度)。p 的取值范围为 0 到 9(包括两端)。格式为年-月-日 小时:分钟:秒[.小数秒],取值范围为 0000-01-01 00:00:00.000000000 到 9999-12-31 23:59:59.999999999。该类型在存储时以自 1970-01-01 00:00:00 UTC 起的毫秒/微秒/纳秒数(UTC 时间戳)保存,不记录原始时区 ID,仅保留绝对时间点。在显示或解析时,系统会根据当前会话的时区将其转换为对应的本地时间进行展示。因此,在不同时区的会话中查询时,其显示结果可能因时区不同而不一样。 |
BYTES | 可变长度二进制字符串(即字节序列)。 |