Nilai tipe data tanggal selalu memiliki komponen tanggal dan waktu. jika Anda hanya menentukan porsi waktu dari nilai datetime seperti yang Anda lakukan, porsi tanggal default ke hari pertama bulan ini.
Ini salah satu tempatnya (paragraf ke-7) dalam dokumentasi Oracle tempat perilaku ini didokumentasikan.
Ada juga TIME
. yang tidak berdokumen literal dan TIME
tipe data (harus diaktifkan melalui 10407
(datetime TIME datatype creation) event) jika Anda perlu menggunakan dan menyimpan hanya waktu, tanpa bagian tanggal.
Berikut ini adalah demonstrasi kecil menggunakan time
literal dan time
tipe data. Tapi sekali lagi ini adalah fitur yang tidak terdokumentasi dan tidak didukung.
SQL> select time '11:32:00' as res
2 from dual;
res
------------------------
11.32.00.000000000 AM
Anda dapat menggunakan literal waktu tanpa mengaktifkan 10407
acara, tetapi untuk dapat menentukan kolom time
ketik data 10407
acara harus diaktifkan:
SQL> create table time_table(time_col time);
create table time_table(time_col time)
*
ERROR at line 1:
ORA-00902: invalid datatype
-- enable 10407 event
SQL> alter session set events '10407 trace name context forever, level 1';
Session altered.
Sekarang kita bisa membuat tabel dengan kolom time
tipe data:
SQL> create table time_table(time_col time);
Table created.
SQL> insert into time_table(time_col)
2 values(time '11:34:00');
1 row created.
SQL> select * from time_table;
TIME_COL
---------------
11.34.00 AM
SQL> alter session set events '10407 trace name context off';
Session altered.