Ein Wert vom Datentyp Datum hat immer Datums- und Zeitkomponenten. Wenn Sie wie bisher nur den Zeitteil des datetime-Werts angeben, ist der Datumsteil standardmäßig der erste Tag des aktuellen Monats.
Hier ist einer der Orte (7. Absatz) in der Oracle-Dokumentation, wo dieses Verhalten dokumentiert ist.
Es gibt auch undokumentierte TIME
Literal und TIME
Datentyp (muss über 10407
aktiviert werden (datetime TIME datatype creation) event), wenn Sie nur die Zeit ohne Datumsteil verwenden und speichern müssen.
Hier ist eine kleine Demonstration der Verwendung von time
Literal und time
Datentyp. Aber auch hier handelt es sich um eine undokumentierte und nicht unterstützte Funktion.
SQL> select time '11:32:00' as res
2 from dual;
res
------------------------
11.32.00.000000000 AM
Sie können das Zeitliteral verwenden, ohne 10407
zu aktivieren Ereignis, sondern um eine Spalte time
definieren zu können Datentyp 10407
Ereignis muss aktiviert werden:
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.
Jetzt können wir eine Tabelle mit einer Spalte time
erstellen Datentyp:
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.