Стойност на тип данни за дата винаги има компоненти за дата и час. ако посочите само времева част от стойността за дата и час, както сте направили, частта от датата по подразбиране е първия ден от текущия месец.
Ето едно от местата (7-ми параграф) в документацията на Oracle, където е документирано това поведение.
Има и недокументирано TIME
литерал и TIME
тип данни (трябва да се активира чрез 10407
(създаване на тип данни datetime TIME) събитие), ако трябва да използвате и съхранявате само време, без част от датата.
Ето малка демонстрация на използване на time
литерал и time
тип данни. Но отново това е недокументирана и неподдържана функция.
SQL> select time '11:32:00' as res
2 from dual;
res
------------------------
11.32.00.000000000 AM
Можете да използвате времеви литерал, без да активирате 10407
събитие, но за да можете да дефинирате колона от time
тип данни 10407
събитието трябва да бъде разрешено:
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.
Сега можем да създадем таблица с колона с time
тип данни:
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.