Oracle timestamp 字节,Oracle的转储(systimestamp)字节的含义

本文详细解读了Oracle数据库中systimestamp(188型)、timestamp文字(187型)和普通timestamp列(180型)的区别,包括它们的内部表示形式、存储结构和示例。重点介绍了如何理解不同类型的日期时间数据类型和它们之间的转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有一些表面上相似但内部不同的日期时间数据类型. systimestamp是188型(并有时区信息);时间戳文字是类型187,没有时区信息,188是它;一个普通的时间戳列是180型:

select dump(systimestamp) from dual;

DUMP(SYSTIMESTAMP)

--------------------------------------------------------------------------------

Typ=188 Len=20: 223,7,7,31,9,50,28,11,128,203,79,35,1,0,5,0,0,0,0,0

select dump(timestamp '2015-07-31 08:55:06.157047 +00:00') from dual;

DUMP(TIMESTAMP'2015-07-3108:55:06.157047+00:00')

---------------------------------------------------------------

Typ=188 Len=20: 223,7,7,31,8,55,6,0,216,88,92,9,0,0,5,0,0,0,0,0

select dump(timestamp '2015-07-31 08:55:06.157047') from dual;

DUMP(TIMESTAMP'2015-07-3108:55:06.157047')

---------------------------------------------------------------

Typ=187 Len=20: 223,7,7,31,8,55,6,0,216,88,92,9,0,0,3,0,0,0,0,0

create table t (ts timestamp);

insert into t (ts) values (timestamp '2015-07-31 08:55:06.157047');

select dump(ts) from t;

DUMP(TS)

--------------------------------------------------------------------------------

Typ=180 Len=11: 120,115,7,31,9,56,7,9,92,88,216

其中,只有时间戳列使用您链接到的文章中的内部格式,使用年份超过100的表示法.

对于其他字节,第一个字节是base-256修饰符,第二个字节是256年的基数;所以你会把它解释为

223 + (7 * 256) = 2015

您可以在My Oracle Support文档69028.1中阅读有关内部存储的更多信息.那个,以及在评论中链接的早期答案,指的是两种日期类型,但是时间戳被视为相同的秒数,其余部分可以推断为187/188型 – 无论如何是小数秒部分:

Byte 1 - Base 256 year modifier: 223

2 - Base 256 year: 7 (256 * 7 = 1792 + 223 = 2015)

3 - Month: 7

4 - Day: 31

5 - Hours: 8

6 - Minutes: 55

7 - Seconds: 6

8 - Unused?

9 - Base 256 nanoseconds: 216

10 - Base 256 ns modifier 1: 256 * 88 = 22528

11 - Base 256 ns modifier 2: 256 * 256 * 92 = 6029312

12 - Base 256 ns modifier 3: 256 * 256 * 256 * 9 = 150994944

=> actual nanoseconds = 216 + 22528 + 6029312 + 150994944

=> 157047000

13-20 - Time zone data?

对于类型120,小数秒是相同的但是字节反转.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值