postgresql浮点数函数_postgresql数据库——数据类型总结postgresql数据库的 数据类型
postgresql⽀持多种数据类型,主要有:整数类型、浮点数类型、任意精度数值、⽇期时间类型、字符串类型、⼆进制类型、布尔类型和数组类型等。
1、整数类型
postgresql提供了多种数值数据类型,不同的数据类型提供不同的取值范围,可以存储的值范围越⼤,所需要的存储空间也会越⼤。
postgresql提供的整数类型有:mallint、int、bigint。
《类型名称》  《说明》    《存储需求》  《取值范围》
smallint  ⼩范围的整数      2字节        -32768----32767
int        普通⼤⼩的整数    4字节        -2147483648----2147483647
bigint    ⼤整数            8字节        -9223372036854775808----9223372036854775807
2、浮点数类型:
postgresql中使⽤浮点数来表⽰⼩数。浮点类型有两种:real和double precision,如下所⽰:
《类型名称》            《说明》        《存储需求》
real                6位⼗进制数字精度          4字节
double precision    15位⼗进制数字精度        8字节
3、任意精度类型
postgresql中使⽤numeric表⽰任意精度的类型是数值,使⽤numeric(m,n)来表⽰,其中m称为精度,表⽰总共的位数;n称为标度,是表⽰⼩数的位数。例如:563.129的精度为9,标度为3
注意:numeric的有效取值范围由M和D的值决定。如果改变M⽽固定D,那么其取值范围将随M的变⼤⽽变⼤。另外,如果⽤户指定的精度超出精度外,就会四舍五⼊进⾏处理。如下:
testdb=# create table emp (t numeric(5,1),y numeric(5,3));
testdb=# insert into emp values (9.12,9.156);
testdb=# select * from emp;
t  |  y
-----+-------
9.1 | 9.156
4、⽇期与时间类型:
postgresql中有多种表⽰⽇期的数据类型,主要有:time、date、timestamp和interval。每⼀个类型都有合法的取值范围,当指定确实不合法的值时系统将“零”值插⼊数据库中。如下类型介绍:
《类型名称》    《含义》            《⽇期范围》        《存储需求》      《存储格式》
time        只⽤于⼀⽇内的时间  00:00:00---24:00:00        8字节          HH:MM:SS
date        只⽤于⽇期          4713BC---58784897AD        4字节          YYYY-MM-DD
timestamp  ⽇期和时间          4713BC---58784897AD        8字节      YYYY-MM-DD HH:MM:SS
注意:time和timestamp类型,默认情况下为without time zone(不带时区);如果需要,可以设置为带时区(with time zone )
4.1、time:类型使⽤
time类型⽤在时间上,在存储时需要8字节,格式为:HH:MM:SS。HH表⽰⼩时;MM表⽰分钟;SS表⽰秒。
例⼦:
testdb=# create table test (t time);
testdb=# insert into test values ('11:10:25 '),('23:45');  ---注意,第⼀个时间值最后有⼀个空格,
testdb=# select * from test;
t
----------
11:10:25
23:45:00
(2 rows)
从上⾯的结果可以看出,两个时间都正确插⼊,⽽且格式都为:HH:MM:SS
testdb=# insert into test values (current_time),(now());    ---插⼊系统当前时间
INSERT 0 2
testdb=# select * from test;
t
-----------------
11:10:25
23:45:00
04:56:57.034863
04:56:57.034863
(4 rows)
从上⾯可以看出,会显⽰时区;
4.2、date:类型
date类型⽤在⽇期值时,没有时间部分,存储需要4字节。⽇期格式为:'YYYY-MM-DD',其中YYYY表⽰年;MM表⽰⽉;DD表⽰⽇;。在给date类型的字段赋值时,可以使⽤字符串类型或者数字类型的数据插⼊,只要符合date的⽇期格式即可。
①:以“YYYY-MM-DD”或者“YYYYMMDD”字符串格式表⽰的⽇期。例如,输⼊‘2018-12-31’或者‘20181231’,插⼊数据库的⽇期都为2018-12-31.
②:以“YY-MM-DD”或者“YYMMDD”字符串格式表⽰的⽇期,在这⾥YY表⽰两位的年值。postgresql使⽤以下规则解释两位年
值:“00-69”转换年值为‘2000--2069’;‘70-99’转换年值为‘1970-1999’;
③:利⽤current_date或者now()插⼊当前系统⽇期。
例⼦:
testdb=# create table emp (d date);
testdb=# insert into emp values ('1998-08-08'),('19980808'),('20180808');
testdb=# select * from emp;
d
------------
text函数什么意思1998-08-08
1998-08-08
2018-08-08
2018-06-23
(4 rows)
注意:now()函数返回⽇期和时间值,在保存到数据库时,只保留了⽇期部分。
4.3、timestamp:类型
timestamp的⽇期格式为YYYY-MM-DD HH:MM:SS。在存储时需要8字节。如:
testdb=# create table emp (ts timestamp);
testdb=# insert into emp values ('2018-08-10 11:00:02'),(now());
testdb=# select * from emp;
ts
---------------------------
2018-08-10 11:00:02
2018-06-23 05:14:17.52538
(2 rows)
4.4、创建带时区的⽇期和时间类型
testdb=# create table emp (t time with time zone);
CREATE TABLE
testdb=# insert into emp values ('12:10:05 PST'),('12:10:10');
INSERT 0 2
testdb=# select * from emp;
t
-------------
12:10:05-08
12:10:10-04
(2 rows)
其中,PST为西8区,如果不指定时区,默认是东8区。
5、字符串类型:
字符串类型⽤来存储字符串数据,除了可以存储字符串数据之外,还可以存储其他数据,⽐如图⽚和声⾳的⼆进制数据。除了可以进⾏区分或者不区分⼤⼩写的字符串⽐较外,还可以进⾏模式匹配查。postgresql的字符串类型包括:char、varchar和text。
《类型名称》                      《说明》
char(n)              固定长度⾮⼆进制字符串,不⾜补空⽩
varchar(n)          变长⾮⼆进制字符串,有长度限制
text                变长⾮⼆进制字符串,⽆长度限制
注意:
char(n) varchar(n),其中n是⼀个正整数。表⽰可以存储n个字符的字符串。如果要存储的字符串⽐声明的长度短,类型为char的数值将会⽤空⽩填满;⽽类型为varchar的数值将只存储短些的字符串。
char类型中填充的空⽩是⽆意义的。例如,⽐较两个char值的时候填充的空⽩都会被忽略,在转换成其他字符串类型的时候,char值⾥⾯的空⽩会被删除,注意在varchar和text数值⾥,结尾的空⽩是有意思的。
例⼦:
testdb=# create table emp (v1 char(5),v2 varchar(10));
CREATE TABLE
testdb=# insert into emp values ('ab','ab '),('abc','abc'),('ab  ','ab  ');
INSERT 0 3
testdb=# select * from emp;
v1  |  v2
-------+-------
ab    | ab
abc  | abc
ab    | ab
(3 rows)
testdb=# select concat('(',v1, ')'),concat('(',v2, ')') from emp;
concat  | concat
---------+---------
(ab  ) | (ab )
(abc  ) | (abc)
(ab  ) | (ab  )
(3 rows)
--text类型:
postgresql提供text类型,它可以存储任何长度的字符串。虽然text类型不是sql标准,但是许多其他sql数据库系统也有。
例⼦:
testdb=# create table emp (t1 text);
testdb=# insert into emp values ('ab'),('agcd'),('ab  ');
testdb=# select * from emp;
-------
ab
agcd
ab
(3 rows)
testdb=# select concat('(',t1, ')') from emp;
concat
---------
(ab)
(agcd)
(ab  )
(3 rows)
6、⼆进制类型
postgresql⽀持两类字符型数据:⽂本字符串和⼆进制字符串,postgresql提供了bytea类型,⽤于存储⼆进制字符串。bytea类型存储空间为4字节加上实际的⼆进制字符串。
testdb=# create table emp (b bytea);                              ^
testdb=# insert into emp values (E'\\000');
INSERT 0 1
testdb=# select * from emp;
b
------
\x00
(1 row)
7、布尔类型
postgresql提供了Boolean布尔数据类型。Boolean⽤1字节来存储,提供了true(真),false(假)两个值。另外,⽤户可以使⽤其他有效⽂本值替代true和false。替代true的⽂本值为‘t’‘true’‘y’,'1'‘yes’;替代false的⽂本值为‘f’‘n’,'0'
testdb=# create table emp (b boolean);
CREATE TABLE
testdb=# insert into emp values (true),(false),('y'),('no'),('0');
INSERT 0 5
testdb=# select * from emp;
b
---
t

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。