本文将介绍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  | 可变长度二进制字符串(即字节序列)。  |