oracle存储日期
㈠ 在oracle中, date datetime有什么区别啊
在oracle中, date、datetime区别为:格式不同、存储空间不同、精度不同。
一、格式不同
1、date:date支持的范围是 '1000-01-01' 到'9999-12-31'。
2、datetime:datetime支持的范围是'1000-01-0100:00:00' 到 '9999-12-3123:59:59'。
二、存储空间不同
1、date:date型数值用于需要一个日期值而不需要时间部分,占用3个字节。
2、datetime:datetime型数值用于需要同时包含日期和时间信息的值,占用8个字节。
三、精度不同
1、date:date转换为datetime会增加精度,时、分、秒、毫秒数都为0。
2、datetime:datetime转换为date会丢失精度,约去时、分、秒、毫秒数。
㈡ oracle中日期型数据长度有什么不同
oracle数据类型看起来非常简单,但用起来会发现有许多知识点,本文是我对ORACLE日期数据类型的一些整理,都是开发入门资料,与大家分享:
注:由于INTERVAL及TIME ZONE实际用得比较少,所以本文内容未涉及这两个方面。
1、常用日期型数据类型
1.1、DATE
这是ORACLE最常用的日期类型,它可以保存日期和时间,常用日期处理都可以采用这种类型。DATE表示的日期范围可以是公元前4712年1月1日至公元9999年12月31日
date类型在数据库中的存储固定为7个字节,格式为:
第1字节:世纪+100
第2字节:年
第3字节:月
第4字节:天
第5字节:小时+1
第6字节:分+1
第7字节:秒+1
1.2、TIMESTAMP(p)
这也是ORACLE常用的日期类型,它与date的区别是不仅可以保
存日期和时间,还能保存小数秒,小数位数可以指定为0-9,默认为6位,所以最高精度可以到ns(纳秒),数据库内部用7或者11个字节存储,如果精度为
0,则用7字节存储,与date类型功能相同,如果精度大于0则用11字节存储。
格式为:
第1字节:世纪+100
第2字节:年
第3字节:月
第4字节:天
第5字节:小时+1
第6字节:分+1
第7字节:秒+1
第8-11字节:纳秒,采用4个字节存储,内部运算类型为整形
注:TIMESTAMP日期类型如果与数值进行加减运算会自动转换为DATE型,也就是说小数秒会自动去除。
1.3、DATE与TIMESTAMP类型内部存储验证
1 create table T
2 (
3 C1 DATE,
4 C2 TIMESTAMP(9)
5 );
6
7 insert into t(c1,c2) values(date'2010-2-12',timestamp'2010-2-12 13:24:52.234123211');
8 insert into t(c1,c2) values(
9 to_date('2010-2-12 10:20:30','YYYY-MM-DD HH24:MI:SS'),
10 to_timestamp('2010-2-12 13:24:52.123456','YYYY-MM-DD HH24:MI:SS.FF6')
11 );
12
13 SQL> select c1,mp(c1) c1_d,c2,mp(c2) c2_d from t;
㈢ oracle能单独存一个不带时间的日期么或者是不带日期的时间
不行,oracle没有不带时间的日期,oracle日期时间类型有date和timestamp,都带日期和时间,文档中说:
DATE
Valid date range from January 1, 4712 BC, to December 31, 9999 AD. The default format is determined explicitly by the NLS_DATE_FORMATparameter or implicitly by the NLS_TERRITORY parameter. The size is fixed at 7 bytes. This datatype contains the datetime fields YEAR, MONTH, DAY,HOUR, MINUTE, and SECOND. It does not have fractional seconds or a time zone.
TIMESTAMP [(fractional_seconds_precision)]
㈣ oracle 数据类型
按类型分为:字符串类型、数字类型、日期类型、LOB类型、LONG RAW& RAW类型、ROWID & UROWID类型。
在讲叙字符串类型前,先要讲一下编码。字符串类型的数据可依编码方式分成数据库字符集(CHAR/VARCHAR2/CLOB/LONG)和国际字符集(NCHAR/NVARCHAR2/NCLOB)两种。数据库中的字符串数据都通过字符集将字符转换为数字后(二进制),才存储到数据块中。通过不同的编码集转换,即便是相同的字符,也可能会转换成不同的二进制编码。这也是产生乱码的原因。数据库的编码格式一般是在创建数据库时指定的。当然也可以修改数据库的编码。
一 字符串类型
1.1:CHAR类型 CHAR(size [BYTE | CHAR])
CHAR类型,定长字符串,会用空格填充来达到其最大长度。非NULL的CHAR(12)总是包含12字节信息。CHAR字段最多可以存储2,000字节的信息。如果创建表时,不指定CHAR长度,则默认为1。另外你可以指定它存储字节或字符,例如 CHAR(12 BYTYE) CHAR(12 CHAR).一般来说默认是存储字节
注意:数据库的NLS_CHARACTERSET 为AL32UTF8,即一个汉字占用三到四个字节。如果NLS_CHARACTERSET为ZHS16GBK,则一个字符占用两个字节。
1.2: NCHAR类型
这是一个包含UNICODE格式数据的定长字符串。NCHAR字段最多可以存储2,000字节的信息。它的最大长度取决于国家字符集。
1.3 VARCHAR类型
不要使用VARCHAR数据类型。使用VARCHAR2数据类型。
1.4: VARCHAR2类型
变长字符串,与CHAR类型不同,它不会使用空格填充至最大长度。VARCHAR2最多可以存储4,000字节的信息。
1.5: NVARCHAR2类型
这是一个包含UNICODE格式数据的变长字符串。 NVARCHAR2最多可以存储4,000字节的信息。
二. 数字类型
2.1 NUMBER类型
NUMBER(P,S)是最常见的数字类型,可以存放数据范围为10130~10126(不包含此值),需要1~22字节(BYTE)不等的存储空间。
P 是Precison的英文缩写,即精度缩写,表示有效数字的位数,最多不能超过38个有效数字
S是Scale的英文缩写,可以使用的范围为-84~127。Scale为正数时,表示从小数点到最低有效数字的位数,它为负数时,表示从最大有效数字到小数点的位数
下面是官方文档的示例
Actual Data Specified As Stored As
123.89 NUMBER 123.89
123.89 NUMBER(3) 124
123.89 NUMBER(6,2) 123.89
123.89 NUMBER(6,1) 123.9
123.89 NUMBER(3) 124
123.89 NUMBER(4,2) exceeds precision
123.89 NUMBER(6,-2) 100
.01234 NUMBER(4,5).01234
.00012 NUMBER(4,5) .00012
.000127 NUMBER(4,5) .00013
.0000012 NUMBER(2,7) .0000012
.00000123 NUMBER(2,7) .0000012
1.2e-4 NUMBER(2,5) 0.00012
1.2e-5 NUMBER(2,5) 0.00001
2.2 INTEGER类型
INTEGER是NUMBER的子类型,它等同于NUMBER(38,0),用来存储整数。若插入、更新的数值有小数,则会被四舍五入。
2.3 浮点数
Oracle 数据库提供了专为浮点数的两种数值数据类型:
BINARY_FLOAT
BINARY_FLOAT 是 32 位、 单精度浮点数字数据类型。可以支持至少6位精度,每个 BINARY_FLOAT 的值需要 5 个字节,包括长度字节。
BINARY_DOUBLE
BINARY_DOUBLE 是为 64 位,双精度浮点数字数据类型。每个 BINARY_DOUBLE 的值需要 9 个字节,包括长度字节。
在数字的列中,浮点数有小数精度。在 BINARY_FLOAT 或 BINARY_DOUBLE 的列中,浮点数有二进制的精度。二进制浮点数支持的特殊值无穷大和 NaN (不是数字)。
2.5 FLOAT类型
FLOAT类型也是NUMBER的子类型。
Float(n),数 n 指示位的精度,可以存储的值的数目。N 值的范围可以从 1 到 126。若要从二进制转换为十进制的精度,请将 n 乘以 0.30103。要从十进制转换为二进制的精度,请用 3.32193 乘小数精度。126 位二进制精度的最大值是大约相当于 38 位小数精度。
三. 日期类型
日期类型用于存储日期数据,但是并不是使用一般的格式(2012-08-08)直接存储到数据库的。
3.1 DATE类型
DATE是最常用的数据类型,日期数据类型存储日期和时间信息。虽然可以用字符或数字类型表示日期和时间信息,但是日期数据类型具有特殊关联的属性。为每个日期值,Oracle 存储以下信息: 世纪、 年、 月、 日期、 小时、 分钟和秒。一般占用7个字节的存储空间。
3.2 TIMESTAMP类型
这是一个7字节或12字节的定宽日期/时间数据类型。它与DATE数据类型不同,因为TIMESTAMP可以包含小数秒,带小数秒的TIMESTAMP在小数点右边最多可以保留9位
3.3 TIMESTAMP WITH TIME ZONE类型
这是TIMESTAMP类型的变种,它包含了时区偏移量的值
3.4 TIMESTAMP WITH LOCAL TIME ZONE类型
3.5 INTERVAL YEAR TO MOTH
3.6 INTERVAL DAY TO SECOND
四. LOB类型
内置的LOB数据类型包括BLOB、CLOB、NCLOB、BFILE(外部存储)的大型化和非结构化数据,如文本、图像、视屏、空间数据存储。BLOB、CLOB、NCLOB类型
4.1 CLOB 数据类型
它存储单字节和多字节字符数据。支持固定宽度和可变宽度的字符集。CLOB对象可以存储最多 (4 gigabytes-1) * (database block size) 大小的字符
4.2 NCLOB 数据类型
它存储UNICODE类型的数据,支持固定宽度和可变宽度的字符集,NCLOB对象可以存储最多(4 gigabytes-1) * (database block size)大小的文本数据。
4.3 BLOB 数据类型
它存储非结构化的二进制数据大对象,它可以被认为是没有字符集语义的比特流,一般是图像、声音、视频等文件。BLOB对象最多存储(4 gigabytes-1) * (database block size)的二进制数据。
4.4 BFILE 数据类型
二进制文件,存储在数据库外的系统文件,只读的,数据库会将该文件当二进制文件处理
五. RAW & LONG RAW类型
5.1 LONG类型
它存储变长字符串,最多达2G的字符数据(2GB是指2千兆字节, 而不是2千兆字符),与VARCHAR2 或CHAR 类型一样,存储在LONG 类型中的文本要进行字符集转换。ORACLE建议开发中使用CLOB替代LONG类型。支持LONG 列只是为了保证向后兼容性。CLOB类型比LONG类型的限制要少得多。 LONG类型的限制如下:
1.一个表中只有一列可以为LONG型。(Why?有些不明白)
2.LONG列不能定义为主键或唯一约束,
3.不能建立索引
4.LONG数据不能指定正则表达式。
5.函数或存储过程不能接受LONG数据类型的参数。
6.LONG列不能出现在WHERE子句或完整性约束(除了可能会出现NULL和NOT NULL约束)
5.2 LONG RAW 类型,能存储2GB 的原始二进制数据(不用进行字符集转换的数据)
5.3 RAW类型
用于存储二进制或字符类型数据,变长二进制数据类型,这说明采用这种数据类型存储的数据不会发生字符集转换。这种类型最多可以存储2,000字节的信息
六. ROWID & UROWID类型
在数据库中的每一行都有一个地址。然而,一些表行的地址不是物理或永久的,或者不是ORACLE数据库生成的。
例如,索引组织表行地址存储在索引的叶子,可以移动。
例如,外部表的ROWID(如通过网关访问DB2表)不是标准的ORACLE的rowid。
ORACLE使用通用的ROWID(UROWIDs)的存储地址的索引组织表和外表。索引组织表有逻辑urowids的,和国外表的外urowids。UROWID这两种类型的存储在ROWID伪(堆组织的表的物理行id)。
创建基于逻辑的rowid在表中的主键。逻辑的rowid不会改变,只要主键不改变。索引组织表的ROWID伪UROWID数据类型。你可以访问这个伪列,你会堆组织表的ROWID伪(即使用一个SELECT …ROWID语句)。如果你想存储的rowid索引组织表,那么你就可以定义一列的表型UROWID到列检索值的ROWID伪。
㈤ oracle能单独存一个不带时间的日期么
可以,存储的时候,不把时间写上去就可以了。
㈥ oracle 存储过程 时分秒 日期比较,怎么写的
只比较 "时分秒" 的部分的话.
直接
TO_CHAR(日期1, 'HH24MISS') > TO_CHAR(日期2, 'HH24MISS')
这种方式来比较。
如果是 要比较日期的话, 那么直接
日期1 > 日期2
这种方式来比较。
㈦ ORACLE数据类型 日期时间
oracle中没有你说的这种短日期,最短的也就是date,不过他可以精确到时、分、秒。如果你想存短日期数据,可以定义为date类型,存储的时候,使用trunc函数来截取插入的时间,截取到整天。这样时 分 秒 都是00 00 00,
oracle中的时间类型只有date和TIMESTAMP,TIMESTAMP是比date更精确的类型。
㈧ oracle 存储日期精确到哪位
日期类型(DATE)精确到秒。
时间戳类型(TIMESTAMP)精确到秒的小数点后6位,不过不是受操作系统限制中的主机振荡频率限制,windows就精确不到小数后6位。
㈨ 怎样在ORACLE的表中插入系统日期比如说2008-06-02,不要时间!
据楼主所说,估计你保存
日期
的字段类型应该是date类型。
你可以写成:
insert
into
table_income
values
(22,1001,111,
to_date(to_char(sysdate,'yyyy-mm-dd'),'yyyy-mm-dd')
to_date(to_char(sysdate,'yyyy-mm-dd'),'yyyy-mm-dd');
就不会报错了!
㈩ oracle 数据库日期格式怎么只要年月日
可通过用PL/SQL来改变日期格式。
1、登录PL/SQL。
2、登录后,点击菜单栏,工具—首选项。
3、左侧列表找到“日期/时间”。
4、可通过右侧的各种方式进行自定义的格式和自带的格式来进行修改,修改后点击“确定”按钮保存即可。