资源描述:
《oracle日期时间类型》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、Oracle数据类型及存储方式(三)日期时间类型——袁光东[转]2009年10月18日星期日16:57第三部分日期时间类型§3.1DATEDate类型Oralce用于表示日期和时间的数据类型。固定占用7个字节。包括七个属性:世纪世纪中的年份月份月份中的哪一天小时分秒SQL>createtabletest_date(col_datedate);TablecreatedSQL>insertintotest_datevalues(to_date('2008-06-2710:35:00','yyyy-mm-ddhh24:mi:ss'));
2、1rowinsertedSQL>selectto_char(col_date,'yyyy-mm-ddhh24:mi:ss'),dump(col_date)fromtest_date;TO_CHAR(COL_DATE,'YYYY-MM-DDHHDUMP(COL_DATE)--------------------------------------------------------------------------------------------------------------2008-06-2710:35:00
3、 Typ=12Len=7:120,108,6,27,11,36,1Date类型的内部编码为12长度:占用7个字节数据存储的每一位到第七位分别为:世纪,年,月,日,时,分,秒。世纪:采用”加100”表示法来存储。即世纪+100来存储。120–100=20年:跟世纪一样采用”加100”表示法来存储。108–100=08(采用两位表示)月:自然存储.6日:自然存储,不做修改,27时:(时,分,秒都采用“加1”法存储)11-1=10分:36-1=35秒:1-1=0为什么世纪和年份要用加100法存储呢?是为了支持BC和AD日期。B
4、C即为公元前。AD即为公元。如果世纪–100为一个负数,那么就是一个BC日期。插入一个公元前日期SQL>insertintotest_datevalues(to_date('-4712-01-01','syyyy-mm-ddhh24:mi:ss'));1rowinsertedSQL>selectto_char(col_date,'bcyyyy-mm-ddhh24:mi:ss'),dump(col_date)fromtest_date;TO_CHAR(COL_DATE,'BCYYYY-MM-DDDUMP(COL_DATE)-----
5、---------------------------------------------------------------------------------------------------------公元2008-06-2710:35:00 Typ=12Len=7:120,108,6,27,11,36,1公元前4712-01-0100:00:00 Typ=12Len=7:53,88,1,1,1,1,1我们已经了解了日期的存储结构。当要对日期进行截取时,比如去掉时,分,秒。只需要把最后的三个字节设为:121
6、21就可以了。SQL>createtabletest_date1(col_charvarchar2(12),col_datedate);TablecreatedSQL>insertintotest_date1values('full',to_date('2008-06-2712:01:00','yyyy-mm-ddhh24:mi:ss'));1rowinsertedSQL>insertintotest_date1(col_char,col_date)select'minute',trunc(col_date,'mi')fromte
7、st_date12 unionall3 select'day',trunc(col_date,'dd')fromtest_date14 unionall5 select'month',trunc(col_date,'mm')fromtest_date16 unionall7 select'year',trunc(col_date,'y')fromtest_date18;4rowsinsertedSQL>selectcol_char,col_date,dump(col_date)from
8、test_date1;COL_CHAR COL_DATE DUMP(COL_DATE)----------------------------------------------------------------------------