tipo solo obtener minutos mayor insertar hora formato fechas fecha ejemplo dato comparar sql oracle time

solo - sql server comparar fechas mayor



Cómo almacenar solo el tiempo; no fecha y hora? (5)

En un campo, necesito almacenar no un par de fecha y hora, es decir, una fecha estándar de Oracle.

01/10/2009 22:10:39

Pero solo el tiempo

22:10:39

Creo que ahorrar espacio en el disco (tengo 2 millones de filas) o proporcionar un procesamiento más rápido.


Ahorrarías unos pocos Mb de espacio en disco (que no es nada hoy en día) y ganarías casi nada en rendimiento.

Puede usar una columna de tipo NUMBER para almacenar el número de segundos desde la medianoche según lo sugerido, simplemente no se olvide de las restricciones.
(Probablemente usaría NUMBER(5, 0) que usa 1-3 bytes dependiendo del valor almacenado, en lugar de los 7 bytes constantes utilizados por una columna DATE )


Su mejor opción sería almacenar "segundos desde la medianoche" como un campo numérico.

SELECT to_char( SYSDATE, ''SSSSS'' ) FROM dual;


Puede probar el tipo de datos INTERVAL DAY TO SECOND pero no le ahorrará espacio en disco ... aunque es muy adecuado para este propósito.

create table t1 (time_of_day interval day (0) to second(0)); insert into t1 values (TO_DSINTERVAL(''0 23:59:59'')); select date ''2009-05-13''+time_of_day from t1;

11 bytes sin embargo.


Puede extraer el tiempo de una fecha como una cadena como esta:

to_char(sysdate,''HH.MI.SS'')

pero no hay un tipo de datos de solo tiempo que te ayude a ahorrar espacio.


puedes usar:

TO_CHAR(<DATE_COLUMN>, ''<TIME_FORMAT>'');

ejemplo

TO_CHAR(SYSDATE, ''HH24:MI:SS'');

para el formato de tiempo puede verificar aquí