北京市网站开发公司,重庆市建设工程信息网施工许可证查询,做网站的公司北京有哪些,基于互联网 模式下的安全网站建设之前我们介绍了varchar2和char的数据库底层存储格式#xff0c;今天我们介绍下date类型的数据存储格式#xff0c;并通过测试程序快速获取一个日期。
一、环境搭建
1.1#xff0c;创建表 我们还是创建一个测试表t_code#xff0c;并插入数据#xff1a; 1.2#xff0c;… 之前我们介绍了varchar2和char的数据库底层存储格式今天我们介绍下date类型的数据存储格式并通过测试程序快速获取一个日期。
一、环境搭建
1.1创建表 我们还是创建一个测试表t_code并插入数据 1.2根据数据rowid获取数据文件号和数据块id 二、数据存储格式导出
2.1dump数据块 我们先把存储数据的数据块进行dump便于后续的存储格式比对。 2.2dump文本数据 我们通过oracle内置的dump函数进行name和bj字段的底层存储数据的查看
16进制格式 10进制 2.3比对 我们查看下dump数据块出来的数据比对下前端dump函数出来的数据对比下 可以看到两边数据一样 三、说明 oracle内部date数据类型的内部代表码为12也就是上面图中的TYP12。根据这个内部码oracle内部程序就知道该表该列的类型具体为什么。 len7就告知了这个字段存储所占为7个字节。第一个字节代表世纪需要减去100获取实际值120-10020第二个字节代表年份也需要减去100获取实际值124-10024第三个字节代表月份11第四个字节代表天数26第五个字节代表小时需要减去1获取实际值5-14第六个字节代表分钟需要减去1获取实际值23-122第五个字节代表秒需要减去1获取实际值1-10。 我们写个简单的c语言程序直接解析下上述的数据
t_date(){int a[] {120,124,11,26,5,23,1};int cent a[0]-100;int year a[1]-100;int month a[2];int day a[3];int hour a[4]-1;int minute a[5]-1;int second a[6]-1;printf(获取时间为%d%d-%d-%d %d:%d:%02d,cent,year,month,day,hour,minute,second);
}int main() {t_date();} 我们测试的第一行数据可以看到与直接的日期数据一模一样。