Skip to content

时间数据类型

数据库中时间数据类型可分为:日期、时间、日期时间、时间戳以及时间间隔数据类型。

日期类型

DATE

存储年、月、日,支持范围为0001-01-01至9999-12-31。

时间类型

  • TIME
  • TIME WITH TIME ZONE

存储时、分、秒、毫秒[、时区],时间支持范围为00:00:00至23:59:59,时区支持-12至+14。

日期时间类型

  • DATETIME
  • DATETIME WITH TIME ZONE

存储年、月、日、时、分、秒、毫秒[、时区],年、月、日支持范围与日期类型一致,时、分、秒支持范围与时间类型一致,时区支持范围与时间类型一致。

时间戳类型

  • TIMESTAMP
  • TIMESTAMP WITH TIME ZONE

存储年、月、日、时、分、秒、毫秒[、时区],支持范围与日期时间类型一致,时间戳类型默认插入当前系统时间,可根据需求设置记录变更时自动变更该行数据时间戳(AUTO UPDATE)。

时间间隔类型

INTERVAL数据类型用来存储两个时间戳之间的时间间隔,各类型和所占空间如下表:

类型占用字节最大精度最大标度
INTERVAL YEAR49-
INTERVAL MONTH49-
INTERVAL DAY49-
INTERVAL HOUR49-
INTERVAL MINUTE49-
INTERVAL SECOND86-
INTERVAL YEAR TO MONTH48-
INTERVAL DAY TO HOUR47-
INTERVAL DAY TO MINUTE46-
INTERVAL DAY TO SECOND876
INTERVAL HOUR TO MINUTE47-
INTERVAL HOUR TO SECOND876
INTERVAL MINUTE TO SECOND876

时间字段可取值范围

时间字段时间类型有效值时间间隔类型有效值
YEAR1至99990至999,999,999
MONTH01至120至11
DAY01至3101至31
HOUR00至230至23
MINUTE00至590至59
SECOND00至59.999(精确到小数点后三位),不适用于DATE类型0至59.999999(SIZE),SIZE最大精度为6

数据类型特性表

数据类型长度Java数据类型长度封装器类说明
DATE4Bytejava.sql.Date4字节(32位)Date格式:YYYY-MM-DD,表示范围公元前'9999-12-31 BC'到'0002-01-01 BC'以及公元后'0001-01-01'到'9999-12-31'。
使用字符串或TO_DATE函数赋值,公元前、公元后日期分别以BC和AD表示,位于时间字符串末尾。
Oracle兼容模式时,DATE类型映射为DATETIME类型。
DATETIME8Bytejava.sql.Timestamp8ByteTimestamp格式: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'到'9999-12-31 23:59:59.999'。
使用字符串或TO_DATE函数赋值公元前、公元后日期分别以BC和AD表示,位于时间字符串末尾。
秒值存储精度为小数点后三位。
TIMESTAMP[(SIZE)]8Bytejava.sql.Timestamp8字节(64位)Timestamp格式: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'到'9999-12-31 23:59:59.999'。
使用字符串或TO_DATE函数赋值,公元前、公元后日期分别以BC和AD表示,位于时间字符串末尾。
SIZE为存储秒值小数部分位数,默认为3,可选值为0到6。
注:数据库只支持到秒值小数精度后三位。
DATETIME WITH TIME ZONE10Bytejava.lang.String变长StringDATETIME WITH TIME ZONE值包含年、月、日、小时、分钟、秒、秒的小数部分,以及在协调通用时间(Coordinated Universal Time,UTC)前后的分钟数。
小数存储到3个小数位,其中时区的取值范围为:-12:59 ~ +14:59。
TIMESTAMP[(SIZE)] WITH TIME ZONE10Bytejava.lang.String变长StringTIMESTAMP WITH TIME ZONE值包含年、月、日、小时、分钟、秒、秒的小数部分,以及在协调通用时间(Coordinated Universal Time,UTC)前后的分钟数。
小数存储到3个小数位。其中时区的取值范围为:-12:59 ~ +14:59。
TIME4Bytejava.sql.Time4ByteTime格式:HH24:MI:SS,支持的范围是'00:00:00'到'23:59:59'。
秒值存储精度为小数点后三位。
TIME WITH TIME ZONE6Bytejava.lang.String变长String格式:HH24:MI:SS +UTC,支持的范围是'00:00:00.000'到'23:59:59.999'。
秒值存储精度为小数点后三位,包含时区(UTC信息),其中时区的取值范围为:-12:59 ~ +14:59。
INTERVAL YEAR[(SIZE)]4Bytejava.lang.String变长String包含年的时间间隔类型。
SIZE是年字段的数字位数,最大精度为9位,取值范围从1至9,SIZE默认值:9,超过SIZE定义范围,报错,无法插入数据,取值范围从0到999999999。
INTERVAL MONTH[(SIZE)]4Bytejava.lang.String变长String包含月的时间间隔类型。
SIZE是月字段的数字位数,最大精度为9位,取值范围从1至9,SIZE默认值:9,超过SIZE定义范围,报错,无法插入数据,取值范围从0到999999999。
INTERVAL DAY[(SIZE)]4Bytejava.lang.String变长String包含日的时间间隔类型。
SIZE是月字段的数字位数,最大精度为9位,取值范围从1至9,SIZE默认值:9,超过SIZE定义范围,报错,无法插入数据,取值范围从0到999999999。
INTERVAL HOUR[(SIZE)]4Bytejava.lang.String变长String包含小时的时间间隔类型。
SIZE是小时字段的数字位数,最大精度为9位,取值范围从1至9,SIZE默认值:9,超过SIZE定义范围,报错,无法插入数据,取值范围从0到999999999。
INTERVAL MINUTE[(SIZE)]4Bytejava.lang.String变长String包含分钟的时间间隔类型。
SIZE是分钟字段的数字位数,最大精度为9位,取值范围从1至9,SIZE默认值:9,超过SIZE定义范围,报错,无法插入数据,取值范围从0到999999999。
INTERVAL SECOND([(P)], [(S)])8Bytejava.lang.String变长String包含秒的时间间隔类型。
P是秒字段的数字位数,取值范围从1至9。
S为微秒表示精度,取值范围从1至6,默认值:9、6。
INTERVAL YEAR[(SIZE)] TO MONTH4Bytejava.lang.String变长String包含年、月的时间间隔类型。
SIZE是年表示数字位数,取值范围从1至8,SIZE默认值:8,YEAR取值范围从0到99999999,MONTH取值范围从0到11。
INTERVAL DAY[(SIZE)] TO HOUR4Bytejava.lang.String变长String包含日、小时的时间间隔类型。
SIZE是日表示数字位数,取值范围从1至7,SIZE默认值:7,DAY取值范围从0到999999,HOUR取值范围从0到23。
INTERVAL DAY[(SIZE)] TO MINUTE4Bytejava.lang.String变长String包含日、分钟的时间间隔类型。
SIZE是日表示数字位数,取值范围从1至6,SIZE默认值:6,DAY取值范围从0到99999,HOUR取值范围从0到23,MINUTE取值范围从0到59,最大值:’999999 23:59’。
INTERVAL DAY[(P)] TO SECOND[(S)]8Bytejava.lang.String变长String包含日、秒的时间间隔类型。
P是日表示的数字位数,取值范围从1至6,DAY取值范围从0到99999,HOUR取值范围从0到23,MINUTE取值范围从0到59,SECOND取值范围从0到59。
S为微秒表示精度,取值范围从1至6,默认值:6、6,最大值:’999999 23:59:59.999999’。
INTERVAL HOUR[(SIZE)] TO MINUTE4Bytejava.lang.String变长String包含小时、分钟的时间间隔类型。
SIZE是小时数字位数,最大精度为7,SIZE默认值:7,SIZE取值范围从0到9999999,MINUTE取值范围从0到59,最大值:’9999999:59’。
INTERVAL HOUR[(P)] TO SECOND[(S)]8Bytejava.lang.String变长String包含时、秒的时间间隔类型。
P是小时表示的数字位数,取值范围从1至7,HOUR取值范围从0到9999999, MINUTE取值范围从0到59,SECOND取值范围从0到59。
S为微秒表示精度,取值范围从1至6,默认值:7、6。最大值:’9999999:59:59.999999’。
INTERVAL MINUTE[(P)] TO SECOND[(S)]8Bytejava.lang.String变长String包含分、秒的时间间隔类型。
P是分钟表示的数字位数,取值范围从1至7,MINUTE取值范围从0到9999999,SECOND取值范围从0到59。
S为微秒表示精度,取值范围从1至6,默认值:7、6,最大值:’9999999:59.999999’。