ITPub博客

首页 > 数据库 > 国内数据库 > YashanDB日期时间型数据

YashanDB日期时间型数据

国内数据库 作者:崖山数据库系统YashanDB 时间:2025-03-27 18:18:59 0 删除 编辑

日期时间型是时间维度上的数据类型,多用于时间维度上的数据提取和分析。可进一步将类型划分为:

  • 日期时间类型(Date&Time Data Type):表示某个日期或时刻。具体包括日期(DATE)、时间(TIME)、时间戳(TIMESTAMP)三个数据类型。
  • 间隔类型(Interval Data Type):表示两个日期或时刻之间的间隔长度。具体包括年到月间隔(INTERVAL YEAR TO MONTH)、天到秒(INTERVAL DAY TO SECOND)两个数据类型。

#日期类型(Date Data Type)

日期类型存储了与时区无关的逻辑日历信息,其信息包括年、月、日(时、分、秒)。 可通过set命令来设置date格式。

#存储属性

类型 字节长度 取值范围 精度
DATE 8 0001-01-01 00:00:00 ~ 9999-12-31 23:59:59 秒

#数据格式

DATE类型的默认格式为YYYY-MM-DD,也可以按类似YYYY-MM-DD [HH[24]][:MI][:SS]的标准格式进行指定,其中各字符含义为:

  • YYYY:以四位数字表示的年份,取值范围[0001,9999]。
  • MM:以一位或两位数字表示的月份,取值范围[1,12]。
  • DD:以一位或两位数字表示的日期,取值范围[1,31]。
  • HH[24]:以一位或两位数字表示的小时,24表示24小时制,取值范围[0,23]。
  • MI:以一位或两位数字表示的分钟,取值范围[0,59]。
  • SS:以一位或两位数字表示的秒钟,取值范围[0,59]。

示例

CREATE TABLE date_date(C1 DATE);INSERT INTO date_date VALUES ('2020-01-01');INSERT INTO date_date VALUES ('2020-1-1');COMMIT;
  SELECT C1 FROM date_date;C1--------------------------------2020-01-01 00:00:002020-01-01 00:00:00
Copied!

#时间类型(Time Data Type)

时间类型表示一日以内的时间,包含时、分、秒和微秒。

#存储属性

类型 字节长度 取值范围 精度
TIME 8 00:00:00.000000 ~ 23:59:59.999999 微秒

#数据格式

按类似HH[24][:MI][:SS][.FF] 的标准格式进行指定,其中各字符含义为:

  • HH[24]:以一位或两位数字表示的小时,24表示24小时制,取值范围[0,23]。
  • MI:以一位或两位数字表示的分钟,取值范围[0,59]。
  • SS:以一位或两位数字表示的秒钟,取值范围[0,59]。
  • FF:以一位到六位数字表示的微秒,取值范围[0,999999]。

对TIME类型执行字符串转换时,上面标准格式里的所有部分可以从低位向上省略,省略的部分按0补位。

示例

CREATE TABLE date_time(C1 TIME);INSERT INTO date_time VALUES ('23:59:59.999999');INSERT INTO date_time VALUES ('2:5:5');INSERT INTO date_time VALUES ('1:2');COMMIT;
   SELECT C1 FROM date_time ;C1--------------------23:59:59.99999902:05:05.00000001:02:00.000000
Copied!

#时间戳类型(Timestamp Data Type)

时间戳类型是信息最为全面的日期时间类型,其信息包含了年、月、日、时、分、秒、微秒。

#存储属性

类型 字节长度 取值范围 精度
TIMESTAMP 8 1-1-1 00:00:00.000000 ~ 9999-12-31 23:59:59.999999 微秒

#数据格式

按类似YYYY-MM-DD [HH[24]][:MI][:SS][.FF]的标准格式进行指定,其中各字符含义为:

  • YYYY:以四位数字表示的年份,取值范围[0001,9999]。
  • MM:以一位或两位数字表示的月份,取值范围[1,12]。
  • DD:以一位或两位数字表示的日期,取值范围[1,31]。
  • HH[24]:以一位或两位数字表示的小时,24表示24小时制,取值范围[0,23]。
  • MI:以一位或两位数字表示的分钟,取值范围[0,59]。
  • SS:以一位或两位数字表示的秒钟,取值范围[0,59]。
  • FF:以一位到六位数字表示的微秒,取值范围[0,999999]。

Note:

微秒的特殊处理:

  • 在数据类型定义时,微秒精度可定义范围为0~9,但输出的实际精度值为6。
  • 系统可以接收0~9位数字的微秒输入,但会将其补齐或四舍五入到6位。

示例

CREATE TABLE date_timestamp (C1 TIMESTAMP);INSERT INTO date_timestamp VALUES ('2020-01-01 12:30:30.123456');INSERT INTO date_timestamp VALUES ('2020-1-1 12:30:30.123456');INSERT INTO date_timestamp VALUES ('2020-1-1');COMMIT;
  SELECT C1 FROM date_timestamp;C1----------------------------------------------------------------2020-01-01 12:30:30.1234562020-01-01 12:30:30.1234562020-01-01 00:00:00.000000--可定义最大9的微秒精度,但实际存储精度为6CREATE TABLE timestamp_test(c1 TIMESTAMP(3));INSERT INTO timestamp_test VALUES('2012-1-1 1:1:1.123456789');SELECT c1 res FROM timestamp_test;RES----------------------------------------------------------------2012-01-01 01:01:01.123457
Copied!

#年到月间隔类型(Interval Year To Month Data Type)

年到月间隔类型表示以年月为单位的时间间隔。

#存储属性

类型 字节长度 取值范围 精度
INTERVAL YEAR TO MONTH 4 -178000000-00 ~ 178000000-00 月

#定义格式

年到月间隔类型的定义格式为INTERVAL YEAR [(year_precision)] TO MONTH。year_precision:表示年的精度,取值范围[0,9],省略时取默认值2。

Note:

00-00特殊处理:

在年精度最大值9以内,和月精度最大值2以内,输入任意个0,都将被视为'00',而不受定义格式里所指定的精度限制。

#数据格式

按 YYYY-MM标准格式或 INTERVAL 'YYYY' YEAR(MM)指定:

  • YYYY:年份,有效值为-178000000到178000000。
  • MM:月份,有效值为0到11。

示例

CREATE TABLE date_iytm (no INT, c1 INTERVAL YEAR(4) TO MONTH);INSERT INTO date_iytm VALUES(1,'1000-10');INSERT INTO date_iytm VALUES(2,'1000-0');INSERT INTO date_iytm VALUES(3,'000000000-11');INSERT INTO date_iytm VALUES(4,INTERVAL '1000' YEAR(9));INSERT INTO date_iytm VALUES(5,INTERVAL '11' MONTH);COMMIT;
  SELECT no,c1 FROM date_iytm ORDER BY no;
          NO C1            
------------ ---------------
           1 +1000-10     
           2 +1000-00     
           3 +00-11       
           4 +1000-00     
           5 +00-11
Copied!

#天到秒间隔类型(Interval Day To Second Data Type)

天到秒间隔类型表示以天、时、分、秒、微秒为单位的时间间隔。

#存储属性

类型 字节长度 取值范围 精度
INTERVAL DAY TO SECOND 8 -100000000 00:00:00.000000
~ 100000000 00:00:00.000000
微秒

#定义格式

天到秒间隔类型的定义格式为 INTERVAL DAY[(day_precision)] TO SECOND[(fractional_seconds_precision)],其中:

  • day_precision:表示天的精度,语法支持[0,9],实际取值范围[0,8]。
  • fractional_seconds_precision:表示微秒的精度,取值范围[0,9]。

(day_precision)省略时,系统取默认值2; (fractional_seconds_precision)省略时,系统取默认值6。

#数据格式

该类型的标准格式为 DD HH:MI:SS[.FF]或 INTERVAL 'DD' DAY(day_precision)或 INTERVAL 'HH' HOUR或INTERVAL 'MI:SS.DDDDDD' MINUTE TO SECOND(fractional_seconds_precision),各字符含义为:

  • DD:日期,取值范围[-100000000,100000000 ]。
  • HH:小时,取值范围[0,23 ]。
  • MI:分钟,取值范围[0,59 ]。
  • SS:秒钟,取值范围[0,59 ]。
  • FF:微秒,取值范围[0,999999 ]。

Note:

微秒的特殊处理:

  • 在数据类型定义时,微秒精度可定义范围为0~9,但输出的实际精度值为6。
  • 系统可以接收0~9位数字的微秒输入,但会将其补齐或四舍五入到定义的精度(定义的精度大于6时按6处理)。

示例

CREATE TABLE date_idts(no INT, c1 INTERVAL DAY(9) TO SECOND(9));INSERT INTO date_idts VALUES(1,'50 10:30:59.999999');INSERT INTO date_idts VALUES(2,'50 00:00:59.999999');INSERT INTO date_idts VALUES(3,'00 10:30:00.000000');INSERT INTO date_idts VALUES(4,'50 00:00:00.000000');INSERT INTO date_idts VALUES(5,INTERVAL '50' DAY(6));INSERT INTO date_idts VALUES(6,INTERVAL '10' HOUR);INSERT INTO date_idts VALUES(7,INTERVAL '30:59.9' MINUTE TO SECOND(6));INSERT INTO date_idts VALUES(8,INTERVAL '30:59.9999999' MINUTE TO SECOND(6));INSERT INTO date_idts VALUES(9,INTERVAL '30:59.9999990' MINUTE TO SECOND(6));INSERT INTO date_idts VALUES(10,INTERVAL '30:59.9999990' MINUTE TO SECOND(3));INSERT INTO date_idts VALUES(11,INTERVAL '30:59.999999567' MINUTE TO SECOND(8));COMMIT;
   SELECT no,c1 FROM date_idts ORDER BY no;
          NO C1                             
------------ --------------------------------
           1 +50 10:30:59.999999           
           2 +50 00:00:59.999999           
           3 +00 10:30:00.000000           
           4 +50 00:00:00.000000           
           5 +50 00:00:00.000000           
           6 +00 10:00:00.000000           
           7 +00 00:30:59.900000           
           8 +00 00:31:00.000000           
           9 +00 00:30:59.999999           
          10 +00 00:31:00.000000             
          11 +00 00:31:00.000000


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70028812/viewspace-3079241/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: YashanDB伪列
请登录后发表评论 登录
全部评论
崖山数据库系统YashanDB是深圳计算科学研究院完全自主研发设计的新型数据库系统,融入原创理论,支持单机/主备、共享集群、分布式等多种部署方式,覆盖OLTP/HTAP/OLAP交易和分析混合负载场景,为客户提供一站式的企业级融合数据管理解决方案。

注册时间:2023-04-11

  • 博文量
    722
  • 访问量
    640016