En værdi af datodatatypen har altid dato- og tidskomponenter. hvis du kun angiver tidsdelen af datetime-værdien, som du gjorde, vil datodelen som standard være den første dag i den aktuelle måned.
Her er et af stederne (7. afsnit) i Oracle-dokumentationen, hvor denne adfærd er dokumenteret.
Der er også udokumenteret TIME
literal og TIME
datatype (skal aktiveres via 10407
(datetime TIME datatype creation) hændelse), hvis du skal bruge og gemme kun tid, uden datodel.
Her er en lille demonstration af brugen af time
literal og time
datatype. Men igen er det en udokumenteret og ikke-understøttet funktion.
SQL> select time '11:32:00' as res
2 from dual;
res
------------------------
11.32.00.000000000 AM
Du kan bruge time literal uden at aktivere 10407
hændelse, men for at kunne definere en kolonne med time
dataindtast 10407
begivenhed skal aktiveres:
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.
Nu kan vi oprette en tabel med en kolonne med time
datatype:
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.