返回首页

gbase数据、南大通用产品文档:GBase8aDECIMAL

更新日期:2024年09月11日

DECIMAL[(M[, D])]代表一个精确值,它所存储的数值范围是-(1E+M -1)/(1E+D)

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
631
到(1E+M -1)/(1E+D)。
在DECIMAL[(MS[, D])]数据类型中,M 是总位数,支持的最大长度为65;D 是
小数点后面的位数,支持的最大长度为30。
在不需要过高的数字精度的场景中,
DECIMAL 中的M 可以定义为M≤18,
这样
可以获得更好的计算性能。
DECIMAL 用来存储那些严格要求数字精度的数据,例如货币数据,在这种情况
下需要指定精度:
salary DECIMAL(5,2)
在DECIMAL(5,2)中,5 表示总位数(整数位和小数位的位数总和),2 是小数位
数。可以存储在salary 列的最小值是-999.99,最大值是999.99。
DECIMAL 类型值的最大范围受限于给定的精度和小数范围。超过小数范围时,
会按四舍五入的原则截断为设定小数位数。
在定义DECIMAL 类型数据列时,如果M 和D 同时省略,则M 取值为10,D 取
值为0,即DECIMAL(10,0),如果只指定M 值,省略D 值,那么插入一个非整
数值的数字时,将按照四舍五入的原则截取到整数位。
注意
Decimal 与时间进行比较,只支持decimal 的常量与datetime 比较,不支持
decimal 列与datetime 比较。
如:表中g 列为decimal 类型,f 列为datetime 类型,则
支持
select * from t1 where g=cast('20220212112059.010000' as date);
不支持
Select * from t1 where g=f;
示例
示例1:定义的列数据类型为DECIMAL(18,5)。
CREATE TABLE products(productnum DECIMAL(18,5));
INSERT INTO products(productnum) VALUES(19000.44365);
gbase> DESC products;
+------------+---------------+------+-----+---------+-------+

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
632
| Field
| Type
| Null | Key | Default | Extra |
+------------+---------------+------+-----+---------+-------+
| productnum | decimal(18,5) | YES
|
| NULL
|
|
+------------+---------------+------+-----+---------+-------+
1 row in set
gbase> SELECT productnum FROM products;
+-------------+
| productnum
|
+-------------+
| 19000.44365 |
+-------------+
1 row in set
示例2:定义的列数据类型为DECIMAL,M 和D 均省略,那么M 默认值为10,
D 默认值为0。
gbase> CREATE TABLE products(productnum DECIMAL);
Query OK, 0 rows affected
gbase> DESC products;
+------------+---------------+------+-----+---------+-------+
| Field
| Type
| Null | Key | Default | Extra |
+------------+---------------+------+-----+---------+-------+
| productnum | decimal(10,0) | YES
|
| NULL
|
|
+------------+---------------+------+-----+---------+-------+
1 row in set
示例3:定义列数据类型为DECIMAL(M,D),插入的数据超出总位数M 时,
报告错误信息;超出精度D 时,则小数部分四舍五入。
gbase> CREATE TABLE products(productnum DECIMAL(8,3));
Query OK, 0 rows affected
gbase> INSERT INTO products(productnum) VALUES(191220.443);
ERROR 1264 (22003): Out of range value for column 'productnum' at row 1
gbase> INSERT INTO products(productnum) VALUES(19122.4436);
Query OK, 1 row affected, 1 warning
gbase> SELECT productnum FROM products;
+------------+
| productnum |
+------------+
|

概述
夏令时是指在夏天太阳升起的比较早时,
将时钟拨快一小时,
以提高日光的使用。
支持时区是支持夏令时的前提,不同的时区对夏令时的支持不同。只有在使用夏
令时的时区内,夏令时才能起作用。
说明

system_time_zone:显示操作系统的时区。

time_zone:当前session 中gbase 使用的时区,session 级变量,可在配置
文件中使用default-time-zone 进行设置,或使用set time_zone 进行修改。
time_zone 的值有三种形式:

System:
time_zone 的值同system_time_zone 的值相同,
如果配置文件里面
没有设置,该值为默认值。

UTC:表示的偏移,范围为[-12:59, 13:00], 例如‘+8:00’ 表示的是东八
区。

time_zone_name:
时区名,
从time_zone_name 中能查出的时区的名字,例
如Asia/Shanghai 表示上海所在的时区。
示例
示例1:使用不同的时区。
gbase> set time_zone='+8:00';
Query OK, 0 rows affected (Elapsed: 00:00:00.00)

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
774
gbase> show variables like '%time_zone%';
+------------------+--------+
| Variable_name
| Value
|
+------------------+--------+
| system_time_zone | CST
|
| time_zone
| +08:00 |
+------------------+--------+
2 rows in set (Elapsed: 00:00:00.00)
gbase> set time_zone='SYSTEM';
Query OK, 0 rows affected (Elapsed: 00:00:00.00)
gbase> show variables like '%time_zone%';
+------------------+--------+
| Variable_name
| Value
|
+------------------+--------+
| system_time_zone | CST
|
| time_zone
| SYSTEM |
+------------------+--------+
2 rows in set (Elapsed: 00:00:00.00)
gbase> set time_zone='US/Central';
Query OK, 0 rows affected (Elapsed: 00:00:00.00)
gbase> show variables like '%time_zone%';
+------------------+------------+
| Variable_name
| Value
|
+------------------+------------+
| system_time_zone | CST
|
| time_zone
| US/Central |
+------------------+------------+
2 rows in set (Elapsed: 00:00:00.00)
示例2:修改系统时区进行比较。
cp
/usr/share/zoneinfo/US/Pacific
/etc/localtime
gbase> set time_zone='SYSTEM';
Query OK, 0 rows affected (Elapsed: 00:00:00.00)
gbase> show variables like '%zone%';
+------------------+--------+
| Variable_name
| Value
|
+------------------+--------+

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
775
| system_time_zone | CST
|
| time_zone
| SYSTEM |
+------------------+--------+
2 rows in set (Elapsed: 00:00:00.00)
gbase> \! date
2021 年06 月07 日星期一14:02:59 CST
gbase> SELECT now() FROM dual;
+---------------------+
| now()
|
+---------------------+
| 2021-06-07 14:03:01 |
+---------------------+
1 row in set (Elapsed: 00:00:00.04)
gbase> \! date -u +%s
1585719249
gbase> SELECT from_unixtime(1585719249) FROM dual;
+---------------------------+
| from_unixtime(1585719249) |
+---------------------------+
| 2020-04-01 13:34:09
|
+---------------------------+
1 row in set (Elapsed: 00:00:00.00)
gbase> \! date
2021年06月07日星期一14:02:59 CST
示例3:在夏令时内,gbase 内时间与系统时间一致。
//修改系统时区
cp
/usr/share/zoneinfo/US/Pacific
/etc/localtime
//修改系统时间为夏令时时间内:
# date -s '2020-3-11 5:00:00'
Wed Mar 11 05:00:00 PST 2020
# hwclock -w
# date
'+%Y-%m-%d %H:%M:%S'
2020-03-11 05:04:22
gbase> set time_zone='SYSTEM';
Query OK, 0 rows affected (Elapsed: 00:00:00.00)
gbase> show variables like '%zone%';
+------------------+--------+
| Variable_name
| Value
|
+------------------+--------+

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
776
| system_time_zone | CST
|
| time_zone
| SYSTEM |
+------------------+--------+
2 rows in set (Elapsed: 00:00:00.00)
gbase> \! date '+%Y-%m-%d %H:%M:%S'
2020-03-11 05:06:06
gbase> SELECT now() FROM dual;
+---------------------+
| now()
|
+---------------------+
| 2020-03-11 05:06:10 |
+---------------------+
1 row in set (Elapsed: 00:00:00.00)
gbase> \! date -u +%s
1583874423
gbase> SELECT from_unixtime(1583874423) FROM dual;
+---------------------------+
| from_unixtime(1583874423) |
+---------------------------+
| 2020-03-11 05:07:03
|
+---------------------------+
1 row in set (Elapsed: 00:00:00.00)

以文本方式加载位于GBFS 服务器上的part.tbl 文件,使用默认行分隔符和‘|’
列分隔符。
示例
gbase> load data infile 'gbfs://192.168.146.20//opt/ssbm/part.tbl' into table part
data_format 3
FIELDS TERMINATED BY '|';

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
1197