Hodnota datového typu datum má vždy komponenty data a času. pokud zadáte pouze časovou část hodnoty datetime, jak jste to udělali, část data se jako výchozí použije na první den aktuálního měsíce.
Zde je jedno z míst (7. odstavec) v dokumentaci Oracle, kde je toto chování zdokumentováno.
Existuje také nezdokumentovaný TIME
doslovný a TIME
datový typ (je třeba povolit prostřednictvím 10407
(datetime TIME vytvoření datového typu) událost), pokud potřebujete použít a uložit pouze čas, bez části data.
Zde je malá ukázka použití time
doslovný a time
datový typ. Ale opět je to nezdokumentovaná a nepodporovaná funkce.
SQL> select time '11:32:00' as res
2 from dual;
res
------------------------
11.32.00.000000000 AM
Časový literál můžete použít bez povolení 10407
událost, ale aby bylo možné definovat sloupec time
datový typ 10407
událost musí být povolena:
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.
Nyní můžeme vytvořit tabulku se sloupcem time
datový typ:
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.