时许数据库clickhouse数据类型
一:查看ck支持的数据类型
SELECT * FROM system.data_type_families
二:数值类型
数值类型
Int类型
固定长度的整数类型又包括有符号和无符号的整数类型。
eg:插入的数据
INSERT INTO aa2 (pk,entr_px_float32,entr_px_float64) VALUES ('99921518',10.01,64.02);
实际结果
Decimal类型
有符号的定点数,可在加、减和乘法运算过程中保持精度。ClickHouse提供了Decimal32、Decimal64和Decimal128三种精度的定点数,支持几种写法:
Decimal(P, S)
Decimal32(S)
数据范围:( -1 * 10^(9 - S), 1 * 10^(9 - S) )
Decimal64(S)
数据范围:( -1 * 10^(18 - S), 1 * 10^(18 - S) )
Decimal128(S)
数据范围: ( -1 * 10^(38 - S), 1 * 10^(38 - S) )
Decimal256(S)
数据范围:( -1 * 10^(76 - S), 1 * 10^(76 - S) )
其中:P代表精度,决定总位数(整数部分+小数部分),取值范围是1~76
S代表规模,决定小数位数,取值范围是0~P
根据P的范围,可以有如下的等同写法:
注意点:不同精度的数据进行四则运算时,**精度(总位数)和规模(小数点位数)**会发生变化,两个不同精度的数据进行四则运算时,结果数据已最大精度为准
eg:
entr_px_decemail32 Decimal(9, 4) |
entr_px_decemail64 Decimal(18, 5) |
entr_px_decemail128 Decimal(19, 3) |
插入结果 |
99999.1234(5+4) | 9999999999999.12345(13+5) | 1234567890111111.123 (16+3) | 成功 |
999999.123(6+3) | 报错Decimal value is too big | ||
99999.12345(5+5) |
成功 数据库值:99999.1234 |
时间类型
时间类型分为DateTime、DateTime64和Date三类。
Date类型
用两个字节存储,表示从 1970-01-01 (无符号) 到当前的日期值。日期中没有存储时区信息。
CREATE TABLE t_date (x date) ENGINE=TinyLog;
INSERT INTO t_date VALUES('2020-10-01');
SELECT x,toTypeName(x) FROM t_date;
┌──────────x─┬─toTypeName(x)─┐
│ 2020-10-01 │ Date │
└────────────┴───────────────┘
DateTime类型
用四个字节(无符号的)存储 Unix 时间戳。允许存储与日期类型相同的范围内的值。最小值为 0000-00-00 00:00:00。时间戳类型值精确到秒(没有闰秒)。时区使用启动客户端或服务器时的系统时区。
DateTime64
需要存储毫秒纳秒,需要DateTime64
毫秒:create_time` DateTime64(3)
纳秒:create_time` DateTime64(9)
驱动使用新版jdbc 0.3.2+以上
参考文档:
https://blog.csdn.net/jmx_bigdata/article/details/109084721