Oracle日期类型占用的空间

Posted 小胡的技术之路

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle日期类型占用的空间相关的知识,希望对你有一定的参考价值。

前言

今天偶然间发现了一篇文章,Oracle中的日期类型的字段,占用了多少空间?

这个我还真回到不上来。。带着好奇,自己照着原文实践了一下

简介

oracle中常用的日期类型,有2种

1.DATE类型 精确到秒

2.TIMESTAMP类型,精确到秒的小数点后9位,到毫秒

实践

创建一张测试表,含有DATE和TIMESTAMP两种类型

插入测试数据:

Oracle日期类型占用的空间

根据数据库字典user_tab_cols看,DATE类型的长度是7bytes,TIMESTAMP类型的长度是11bytes

Oracle日期类型占用的空间

使用dump函数,DATE类型的长度也是7bytes

Oracle日期类型占用的空间

TIMESTAMP类型的长度len也是11bytes,注意第二条记录,由于使用的是to_date,实际存储的是DATE类型,并不是时间戳TIMESTAMP类型的值

Oracle日期类型占用的空间

使用vsize函数,得出一样的结论

在看一下SYSDATE函数,它应该也是一个DATE类型的值,但是我们注意此处len长度就是8bytes,不是DATE类型7bytes,而且typ值是13,DATE类型的typ值是12,TIMESTMP类型的Typ值是180,说明这是不同的类型

typ=13,是一种外置的DATE数据类型,它是一种内部C结构体,依赖C编译器如何表示结构,长度会有所不同。

原文:bisal的个人杂货铺(微信公号)

以上是关于Oracle日期类型占用的空间的主要内容,如果未能解决你的问题,请参考以下文章

MySQL之日期时间类型

oracle 中日期的类型有哪些

ORACLE数据类型 日期时间

oracle中如何修改日期类型的字段值

Oracle两个日期类型字段怎么比较大小

Oracle两个日期类型字段怎么比较大小