gbase8s 浮点数与日期时间存储

在gbase8s数据库中

浮点数据类型为

SMALLFLOAT    4 字节 单精度浮点数 精度为8位
FLOAT (DOUBLE PRECISION) 8 字节 双精度浮点数 精度为16位
DECIMAL(p)  1 + p/2 个字节向上取整
DECIMAL(p,s) NUMERIC(p,s)   (p +3)/2 个字节(如果小数位是偶数)或 (p + 4)/2 个字节(如果小数位是奇数)向上取整

其中 SMALLFLOAT    、FLOAT存储上遵循IEEE754标准

create table t1(c1 float,c2 smallfloat);

insert into t1 values(0.1,0.1);

以float为例 简单计算如下

0.1

0.1 * 2=0.2 0
0.2 * 2=0.4 0
0.4 * 2=0.8 0
0.8 * 2=1.6 1
0.6 * 2=1.2 1
0.2 * 2=0.4 0
...

0.00011 0011 0011 0011...0100 = 1.1001100110011... * 10 ^ -4
小数部分
1001100110011001100110011001100110011001100110011010
指数+偏移量 
0011 1111 1011
符号位(1)+指数和偏移(2-12)+尾数(13-64)
0  011 1111 1011  1001100110011001100110011001100110011001100110011010
整理格式
0011 1111 1011 1001 1001 1001 1001 1001 1001 1001 1001 1001 1001 1001 1001 1010
16进制
3FB999999999999A

smallfloat 计算与 float 类似

decimal 存储如下

create table t2(c1 decimal(16);

insert into t2 values(0.1);

insert into t2 values(0.2);

insert into t2 values(1.1);

insert into t2 values(111.11);

insert into ss values(3.5);

未找到具体存储的资料,根据测试数据猜测为

c (未知) 0/1/2 标识整数部分所占字节,为0 时 整数位0,其余则为小数部分

按照上述规则则实际存储为 0.10、0.20、1.11、111.11、3.5

DECIMAL(p,s) 存储与DECIMAL(p)类似

时间类型

date  4字节

create table t3 (c1 int,c2 date);

insert into t3 values(1,sysdate);

0xb179转换为10进制为45433

date类型为 1899 年 12 月 31 日午夜开始的整天数

datetime

DATETIME 数据类型存储从公元 1 年开始的时期中的任何时刻。事实上,DATETIME 实际上是 28 种数据类型的一个系列,其中每种数据类型都具有不同的精度。

timestamp(n) datetime year to second/fraction(n) 同义词

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值