He3DB知识点-数据类型

He3DB数据库提供了丰富的数据类型,包括数值类型、字符类型、时间类型、布尔类型、货币类型、json类型等等,本文展示了几种常见的数据类型。

数值类型

Type

存储大小/字节

描述

范围

smallint

2

小范围整数

-32768 至 +32767

integer

4

整数的典型选择

-2147483648 至 +2147483647

bigeint

8

大范围整数

-9223372036854775808 至 +9223372036854775807

decimal

多变的

用户指定的精度,精确

小数点前最多 131072 位;小数点后最多 16383 位

numeric

多变的

用户指定的精度,精确

小数点前最多 131072 位;小数点后最多 16383 位

real

4

可变精度,不精确

6 位小数精度

double precision

8

可变精度,不精确

15位十进制数字精度

smallserial

2

自增小整数

1 至 32767

serial

4

自增整数

1 至 2147483647

bigserial

8

大自增整数

1 至 9223372036854775807

整数类型:除去经典的integer(int)类型,Postgreshai h还提供了smallint和bigint来适应不同情况的数据,一般只有在磁盘空间紧张的情况下使用smallint,在超过interger数值的时候才用bigint, 因为int要比bigint快得多。

smallint = int2

int = int4

bigint = int8

另外,Postgres不能像MySQL一样设置数值型的主键自增,而是提供了三种数据类型实现自增:smallserial、serial、bigserial。

任意精度类型:在 He3DB 中,decimal 和 numeric 是相同的,该类型numeric可以存储具有大量位数的数字。特别推荐用于存储货币金额和其他需要准确性的数量。numeric使用值进行计算会产生精确的结果,例如加法、减法、乘法,numeric类型小数位会补零,但是,numeric与整数类型、浮点类型相比,对值的计算非常慢。

浮点类型:数据类型real和double precision是不精确的、精度可变的数字类型,分别为单精度和双精度。扩展名为float4和float8。

字符类型

Type

描述

character varying(n), varchar(n)

有限制的可变长度,最大为1G

character(n), char(n)

固定长度,空白填充, 最大为1G

text

可变无限长度

在 He3DB 中,varchar(n) = character varying(n),char(n) = character(n)。另外,He3DB 还提供了一些字符转换函数。

函数

返回类型

描述

示例

to_char(timestamp,text)

text

把时间戳转换成字符串

to_char(current_timestamp,‘HH12:MI:SS’)

to_char(interval,text)

text

把间隔转换成字符串

interval ‘15h 2m 12s’,HH24:MI:SS

to_char(int,text)

text

把整数转成字符串

to_char(111,‘999’)

to_date(text,text)

date

把字符串转换成日期

to_date(‘05 Dec 2000’,‘DD Mon YYYYY’)

时间类型

Type

存储长度

描述

timestamp

8 bytes

8 字节, 日期 +时间格式

timestamp with time zone

8 bytes

8 字节, 日期 + 时间 + 时区格式

date

4 bytes

4 字节, 日期格式(无时间)

time

8 bytes

8 字节, 时间格式(无日期)

time with time zone

12 bytes

12 字节, 时间 + 时区

interval

12 bytes

16 字节时间间隔

He3DB提供了许多返回当前日期和时间的函数。下面的函数都按照当前事务的开始时刻返回结果:

CURRENT_DATE

CURRENT_TIME

CURRENT_TIMESTAMP

CURRENT_TIME(precision)

CURRENT_TIME(precision)

LOCALTIME

LOCALTIMESTAMP

LOCALTIME(precision)

LOCALTIMESTAMP(precision)

now()

transaction_timestamp()

其中,CURRENT_TIME和 CURRENT_TIMESTAMP返回带有时区的值; 和 LOCALTIMESTAMP返回不带时区的值

CURRENT_TIME、CURRENT_TIMESTAMP、LOCALTIME、 LOCALTIMESTAMP 可以 有选择地给予一个精度参数,该精度会导致结果的秒数域四舍五人到指定的小数位。如果没 有精度参数,将给予所能得到的全部精度。

布尔类型

Type

描述

boolean

true / false

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值