日期/时间类型
GBase 8c支持的日期/时间类型请参见下表。
如果其他的数据库时间格式和GBase 8c数据库的时间格式不一致,可通过修改配置参数DateStyle值来保持一致。
名称 | 描述 | 存储空间 |
DATE | 日期和时间。 | 4字节(兼容模式A 下存储空间大小为8字节) |
TIME [(p)] [WITHOUT TIME ZONE] | 只用于一日内时间。 p表示小数点后的精度,取值范围为0~6。 | 8字节 |
TIME [(p)] [WITH TIME ZONE] | 只用于一日内时间,带时区。 p表示小数点后的精度,取值范围为0~6。 | 12字节 |
TIMESTAMP[(p)] [WITHOUT TIME ZONE] | 日期和时间。 p表示小数点后的精度,取值范围为0~6。 | 8字节 |
TIMESTAMP[(p)] [WITH TIME ZONE] | 日期和时间,带时区。TIMESTAMP 的别名为TIMESTAMPTZ。 p表示小数点后的精度,取值范围为0~6。 | 8字节 |
SMALLDATETIME | 日期和时间,不带时区。 精确到分钟,秒位大于等于30秒进一位。 | 8字节 |
INTERVAL DAY (l) TO SECOND (p) | 时间间隔,X天X小时X分X秒。 l:天数的精度,取值范围为0~6。兼容性考虑,目前未实现具体功能。 p:秒数的精度,取值范围为0~6。小数末尾的零不显示。 | 16字节 |
INTERVAL [FIELDS] [ (p) ] | 时间间隔。 fields:可以是YEAR,MONTH, DAY,HOUR,MINUTE, SECOND,DAY TO HOUR,DAY TO MINUTE,DAY TO SECOND,HOUR TO MINUTE, HOUR TO SECOND,MINUTE TO SECOND。 p:秒数的精度,取值范围为0~6,且fields为SECOND,DAY TO SECOND,HOUR TO SECOND或MINUTE TO SECOND 时,参数p才有效。小数末尾的零不显示。 | 12字节 |
reltime | 相对时间间隔。格式为: X years X mons X days XX:XX:XX 。 采用儒略历计时,规定一年为365.25 天,一个月为30天,计算输入值对应的相对时间间隔,输出采用POSTGRES格式。 | 4字节 |
abstime | 日期和时间。格式为: YYYY-MM-DD hh:mm:ss+timezone 取值范围为1901-12-13 20:45:53 GMT~2038-01-18 23:59:59 GMT, 精度为秒。 | 4字节 |
示例
--创建表。
gbase=# CREATE TABLE date_type_tab(coll date);
CREATE TABLE
--插入数据。
gbase=# INSERT INTO date_type_tab VALUES (date '5-10-2022');
INSERT 0 1
--查看数据。
gbase=# SELECT * FROM date_type_tab;
coll
---------------------
2022-05-10 00:00:00
(1 row)
--删除表。
gbase=# DROP TABLE date_type_tab;
DROP TABLE
--创建表。
gbase=# CREATE TABLE time_type_tab (da time without time zone ,dai time with time zone,dfgh timestamp without time zone,dfga timestamp with time zone, vbg smalldatetime);
CREATE TABLE
--插入数据。
gbase=# INSERT INTO time_type_tab VALUES ('21:21:21','21:21:21 pst','2010-12-12','2013-12-11 pst','2003-04-12 04:05:06');
INSERT 0 1
--查看数据。
gbase=# SELECT * FROM time_type_tab;
da | dai | dfgh | dfga | vbg
----------+-------------+---------------------+------------------------+---------------------
21:21:21 | 21:21:21-08 | 2010-12-12 00:00:00 | 2013-12-11 16:00:00+08 | 2003-04-12 04:05:00
(1 row)
--删除表。
gbase=# DROP TABLE time_type_tab;
DROP TABLE
--创建表。
gbase=# CREATE TABLE day_type_tab (a int,b INTERVAL DAY(3) TO SECOND (4));
CREATE TABLE
--插入数据。
gbase=# INSERT INTO day_type_tab VALUES (1, INTERVAL '3' DAY);
INSERT 0 1
--查看数据。
gbase=# SELECT * FROM day_type_tab;
a | b
---+--------
1 | 3 days
(1 row)
--删除表。
gbase=# DROP TABLE day_type_tab;
DROP TABLE
--创建表。
gbase=# CREATE TABLE year_type_tab(a int, b interval year (6));
CREATE TABLE
--插入数据。
gbase=# INSERT INTO year_type_tab VALUES(1,interval '2' year);
INSERT 0 1
--查看数据。
gbase=# SELECT * FROM year_type_tab;
a | b
---+---------
1 | 2 years
(1 row)
--删除表。
gbase=# DROP TABLE year_type_tab;
DROP TABLE