Ada berbagai tipe data datetime yang mirip tetapi secara internal berbeda. systimestamp
adalah tipe 188 (dan memiliki informasi zona waktu); literal timestamp adalah tipe 187 tanpa info zona waktu dan 188 dengannya; dan kolom stempel waktu biasa adalah tipe 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
Dari jumlah tersebut, hanya kolom stempel waktu yang menggunakan format internal dalam artikel yang Anda tautkan, menggunakan notasi 100 berlebih untuk tahun tersebut.
Untuk yang lain, byte pertama adalah pengubah basis-256, dan byte kedua adalah basis 256 tahun; jadi Anda akan menafsirkannya sebagai
223 + (7 * 256) = 2015
Anda dapat membaca lebih lanjut tentang penyimpanan internal di dokumen Dukungan Oracle Saya 69028.1. Itu, dan jawaban sebelumnya yang ditautkan dalam komentar, merujuk ke dua jenis tanggal, tetapi stempel waktu diperlakukan sama hingga detik, dan beberapa sisanya dapat disimpulkan untuk tipe 187/188 - bagian pecahan-detik tetap:
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?
Untuk tipe 120, pecahan detiknya sama tetapi dengan byte terbalik.