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í