Un valor de tipo de datos de fecha siempre tiene componentes de fecha y hora. si especifica solo la parte de la hora del valor de fecha y hora como lo hizo, la parte de la fecha se establece de forma predeterminada en el primer día del mes actual.
Este es uno de los lugares (párrafo 7) en la documentación de Oracle donde se documenta este comportamiento.
También hay TIME
no documentado literal y TIME
tipo de datos (debe habilitarse a través de 10407
(evento de creación de tipo de datos datetime TIME)) si necesita usar y almacenar solo tiempo, sin parte de fecha.
Aquí hay una pequeña demostración del uso de time
literal y time
tipo de datos. Pero, de nuevo, es una función no documentada y no admitida.
SQL> select time '11:32:00' as res
2 from dual;
res
------------------------
11.32.00.000000000 AM
Puede usar el literal de tiempo sin habilitar 10407
evento, pero para poder definir una columna de time
tipo de datos el 10407
el evento debe estar habilitado:
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.
Ahora podemos crear una tabla con una columna de time
tipo de datos:
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.