虚谷数据库中时间数据类型可分为:日期、时间、日期时间、时间戳、时间间隔。
详细资料请参考虚谷数据库官网文档:https://docs.xugudb.com/
以下是虚谷数据库支持的时间类型字段:
一览表:
字段类型 | 数据格式 | 举例 |
DATE | YYYY-MM-DD | 2024-05-20 |
TIME | HH24:MI:SS | 10:00:00.123 |
TIME WITH TIME ZONE | HH24:MI:SS +UTC | 10:00:00.123 +00:00 |
DATETIME | YYYY-MM-DD HH24:MI:SS | 2024-05-20 10:00:00.123 |
DATETIME WITH TIME ZONE | YYYY-MM-DD HH24:MI:SS +UTC | 2024-05-20 10:00:00.123 +08:00 |
TIMESTAMP(size) | YYYY-MM-DD HH24:MI:SS | 2024-05-20 10:00:00.123 |
TIMESTAMP(size) WITH TIME ZONE | YYYY-MM-DD HH24:MI:SS +UTC | 2024-05-20 10:00:00.123 +08:00 |
INTERVAL |
一、日期类型
1.DATE
数据格式为: YYYY-MM-DD
表示范围为:公元前'9999-12-31 BC' 到 '0002-01-01 BC'
公元后'0001-01-01 AD' 到 '9999-12-31 AD'
省略字母标识,默认为公元后AD。
create table tab1 (col1 int,col2 date);
insert into tab1 values (1,'2024-05-01 AD');
insert into tab1 values (2,'2024-05-02');
insert into tab1 values (3,'2024-05-03 BC');
select * from tab1;
二、时间类型
1.TIME
数据格式为:HH24:MI:SS
表示范围为:'00:00:00' 到 '23:59:59' 秒值存储标度为3.
create table tab2 (col1 int,col2 TIME);
insert into tab2 values (1,'00:00:01');
insert into tab2 values (2,'00:00:02.34');
insert into tab2 values (3,'00:00:03.345');
insert into tab2 values (4,'00:00:04.3456');
select * from tab2;
2.TIME WITH TIME ZONE
数据格式为: HH24:MI:SS +UTC
表示范围为:'00:00:00.000' 到 '23:59:59.999' 包含时区 (UTC信息)
时区的取值范围为:-12:59 + 14:59
这里注意col1=1的显示结果,不写时区信息默认是北京时区,经测试更改系统默认时区,数据库时区后重启依然是北京时区。
create table tab3 (col1 int,col2 TIME WITH TIME ZONE);
insert into tab3 values (1,'00:00:01');
insert into tab3 values (2,'00:00:02.34 +00:00');
insert into tab3 values (3,'00:00:03.345 +08:00');
insert into tab3 values (4,'00:00:04.3456 +10:00');
select * from tab3;
三、日期时间类型
1.DATETIME
数据格式为:YYYY-MM-DD HH24:MI:SS
表示范围为:公元前'9999-12-31 23:59:59.999 BC' 到 '0002-01-01 00:00:00.000 BC'
公元后'0001-01-01 00:00:00.000 AD' 到 '9999-12-31 23:59:59.999 AD'
省略字母标识,默认为公元后AD。秒值存储精度为小数点后三位
create table tab4 (col1 int,col2 DATETIME);
insert into tab4 values (1,'2024-05-20 01:02:03.456');
insert into tab4 values (2,'2024-05-21 01:02:03.4567');
insert into tab4 values (3,'2024-05-22 01:02:03.456 AD');
insert into tab4 values (4,'2024-05-23 01:02:03.456 BC');
select * from tab4;
2.DATETIME WITH TIME ZONE
数据格式为:YYYY-MM-DD HH24:MI:SS +UTC
表示范围为:公元前'9999-12-31 23:59:59.999 BC' 到 '0002-01-01 00:00:00.000 BC'
公元后'0001-01-01 00:00:00.000 AD' 到 '9999-12-31 23:59:59.999 AD'
其中时区的取值范围为:-12:59 +14:59。默认为北京时区。
省略字母标识,默认为公元后AD。省略秒值存储精度为小数点后三位
create table tab5 (col1 int,col2 DATETIME WITH TIME ZONE);
insert into tab5 values (1,'2024-05-20 01:02:03');
insert into tab5 values (2,'2024-05-21 01:02:03.456 +00:00');
insert into tab5 values (3,'2024-05-22 01:02:03.456 +08:00 AD');
insert into tab5 values (4,'2024-05-23 01:02:03.456 +00:00 BC');
select * from tab5;
四、时间戳类型
1.TIMESTAMP(size)
数据格式为:YYYY-MM-DD HH24:MI:SS
表示范围为:公元前'9999-12-31 23:59:59.999 BC' 到 '0002-01-01 00:00:00.000 BC'
公元后'0001-01-01 00:00:00.000 AD' 到 '9999-12-31 23:59:59.999 AD'
省略字母标识,默认为公元后AD。
SIZE为存储秒值小数部分位数,默认为 3,可选值为0-6。
注:数据库只支持到秒值小数精度后三位。。实际有效为0-3.
使用方法与DATETIME日期时间类型大致相同,只不过DATETIME默认秒数后面标度为3,TIMESTAMP(0),TIMESTAMP(1),TIMESTAMP(2),TIMESTAMP(3),为可选。
create table tab6 (col1 int,col2 TIMESTAMP(2),col3 TIMESTAMP(3),col4 TIMESTAMP(6));
insert into tab6 values (1,'2024-05-21 01:02:03.456 AD','2024-05-21 01:02:03.456 AD','2024-05-21 01:02:03.456 AD');
select * from tab6;
2.TIMESTAMP(size) WITH TIME ZONE
数据格式为:YYYY-MM-DD HH24:MI:SS +UTC
表示范围为:公元前'9999-12-31 23:59:59.999 +UTC BC' 到 '0002-01-01 00:00:00.000 +UTC BC'
公元后'0001-01-01 00:00:00.000 +UTC AD' 到 '9999-12-31 23:59:59.999 +UTC AD'
默认为北京时区。默认为公元后AD.小数存储到3个小数位。
使用方法和特点与TIMESTAMP(size)相同,只是多了时区信息UTC。
五、时间间隔类型
1.INTERVAL
时间间隔类型,该数据类型用来存储两个时间戳之间的时间间隔,也就是表示一段时间。
有以下几种类型:
INTERVAL YEAR(size)
INTERVAL MONTH(size)
INTERVAL DAY(size)
INTERVAL HOUR(size)
INTERVAL MINUTE(size)
INTERVAL SECOND(a,b)
INTERVAL YEAR(size) TO MONTH
INTERVAL DAY(size) TO HOUR
INTERVAL DAY(size) TO MINUTE
INTERVAL DAY(size) TO SECOND(size)
INTERVAL HOUR(size) TO MINUTE
INTERVAL HOUR(size) TO SECOND(size)
INTERVAL MINUTE(size) TO SECOND(size)
此数据类型应用场景不常见,不做详细说明。参考详细内容或有业务场景用到可以咨询虚谷技术支持。
以下是简单用法的示例:
create table tab7 (col1 int,col2 INTERVAL YEAR(2),col3 INTERVAL YEAR(2) TO MONTH);
insert into tab7 values (1,INTERVAL '3' YEAR,INTERVAL '2-6' YEAR TO MONTH);
select * from tab7;
col2和col3分别表示为两端时间,第一段时间为3年,第二段时间为2年6个月。