数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

Oracle基本数据类型存储格式浅析—日期类型(1)


发布日期:2020年11月12日
 
Oracle基本数据类型存储格式浅析—日期类型(1)

Oracle基本数据类型存储格式浅析(三)——日期类型

下面通过一个例子进行说明

SQL> create table test_date (date_col date);

表已创建

SQL> insert into test_date values (to_date( :: yyyymmdd hh:mi:ss));

已创建

SQL> insert into test_date values (to_date( :: yyyymmdd hh:mi:ss));

已创建

SQL> insert into test_date values (to_date( :: syyyymmdd hh:mi:ss));

已创建

SQL> insert into test_date values (to_date( :: syyyymmdd hh:mi:ss));

已创建

SQL> insert into test_date values (to_date( :: syyyymmdd hh:mi:ss));

已创建

SQL> insert into test_date values (to_date( :: syyyymmdd hh:mi:ss));

已创建

SQL> insert into test_date values (sysdate);

已创建

SQL> insert into test_date values (to_date( :: syyyymmdd hh:mi:ss));

insert into test_date values (to_date( :: syyyymmdd hh:mi:ss))

*

ERROR 位于第 行:

ORA: (全)年度值必须介于 和 + 之间且不为

SQL> insert into test_date values (to_date( :: yyyymmdd hh:mi:ss));

insert into test_date values (to_date( :: yyyymmdd hh:mi:ss))

*

ERROR 位于第 行:

ORA: (全)年度值必须介于 和 + 之间且不为

SQL> col dump_date format a

SQL> select to_char(date_col syyyymmdd hh:mi:ss) dump(date_col) dump_date from test_date;

TO_CHAR(DATE_COLSY DUMP_DATE

:: Typ= Len=:

:: Typ= Len=:

:: Typ= Len=:

:: Typ= Len=:

:: Typ= Len=:

:: Typ= Len=:

:: Typ= Len=:

已选择

通过最后两条语句已经可以看出Oracle的DATE类型的取值范围是公元前日至公元而且根据日期的特定要不然是公元要不然是公元前不会出现年的情况

日期类型长度是个字节分别表示世纪分和秒

由于不会出现的情况月和日都是按照原值存储的月的范围是日的范围是

由于时秒都会出现的情况因此存储时采用原值加的方式时保存为时保存为时保存为分和秒的情况与小时类似小时的范围是在数据库中以保存分和秒的范围都是在数据库中以保存

年和世纪的情况相对比较复杂可分为公元前和公元后两种情况由于最小的世纪的值是(公元前年)最大值是(公元年)为了避免负数的产生oracle把世纪加保存在数据库中公元世纪保存为公元世纪保存为公元前世纪保存为+())公元前世纪保存为+())

注意对于公元前虽然已经是公元前了但是表示世纪的前两位的值仍然是因此这时的保存的世纪的值仍然是世纪的范围是保存的值是

年的保存与世纪的保存方式类似也把年的值加上进行保存对于公元年保持为公元年保存为公元年保存为公元年保存为公元前保存为+())公元前保存为+())公元前年保存为+())对于公元前的年保存的值总是小于等于对于公元后的年保存的值总是大于等于年的范围是保存的值是

注意一般的世纪都包含了而对于世纪由于包含公元前和公元后两部分且不包含因此包含了

上一篇:Oracle11g数据库的认证体系结构

下一篇:把Oracle数据库移植到Microsoft SQL Server 7.0(2)