oracle - smart - el oráculo inserta solo el tiempo
solidity español (3)
Un tipo de DATE
siempre incluye el componente de fecha.
Una opción es continuar usando DATE
y escribir su código para ignorar el componente de fecha. Para que las consultas sean eficientes en el tiempo, es posible que desee crear un índice basado en funciones en algo como TO_CHAR( date_field, ''HH24:MI:SS'' )
y usar esa expresión en sus consultas.
Alternativamente, podría usar un campo NUMBER
para almacenar el número de segundos desde la medianoche y escribir sus consultas en términos de eso.
Esta pregunta ya tiene una respuesta aquí:
- Cómo almacenar solo el tiempo; no fecha y hora? 5 respuestas
Me gustaría insertar datos en db como tiempo, no como fecha. Si utilizo to_date(''2012-08-31 07:39:33'', ''YYYY-MM-DD HH24:MI:SS'')
también agrega fecha. Si utilizo to_date(''09:34:00'', ''HH24:MI:SS'')
agrega año, mes, día también, de la nada: | Más tarde, necesito obtener filas donde el tiempo esté entre xey, sin tener en cuenta el año, mes o día. ¿Cómo puedo hacer eso? Gracias
puede usar el tipo de columna numérica e insertar valor como
INSERT INTO table_name (nTime)
VALUES (date - trunc(date));
y luego seleccione valores
select *
from table_name t
where t.nTime between (10 / 24 + 15 / 24 / 60) and (12 / 24 + 30 / 24 / 60) --between 10:15 and 12:30
Como alternativa a la solución de date
que muestra Dave, puede usar un tipo de datos de interval
para la columna:
create table t42(id number, t interval day to second);
insert into t42 (id, t) values(123, to_dsinterval(''0 07:39:33''));
insert into t42 (id, t) values(456, to_dsinterval(''0 09:34:00''));
select id
from t42
where t between to_dsinterval(''0 07:00:00'') and to_dsinterval(''0 07:59:59'');
ID
----------
123
La visualización de intervalos es un poco incómoda ya que no tienen modelos de formato , pero consulte esta pregunta para obtener algunas ideas si es necesario. Si solo los usa para filtrar, entonces eso puede no ser un problema en absoluto.