sql >> Base de Datos >  >> RDS >> Oracle

comparar fecha en comando sql

N.º Fecha/marcas de tiempo no tiene ningún formato . Oracle no almacena las marcas de fecha/hora en el formato que ve. El formato que ves es solo para display objetivo. La fecha se almacena internamente en 7 bytes, que es el formato propietario de Oracle .

Por supuesto que podrías. Podrías usar TRUNC que trunca la parte de la hora y deja solo la parte de la fecha y el tipo de datos permanece como fecha.

Por ejemplo,

SQL> SELECT TRUNC(SYSTIMESTAMP) my_tmstmp FROM DUAL;

MY_TMSTMP
----------
2015-05-29

Entonces, obtienes la entrada del usuario en ese formato como una cadena . Primero debe convertir en DATE usando TO_DATE y luego compararlo.

Por ejemplo,

WHERE TRUNC(dt_column) < TO_DATE('05/29/2015 12:07:58', 'MM/DD/YYYY HH24:MI:SS')

Como ya dije, si desea ignorar la parte de tiempo, aplique TRUNC .

Sin embargo, aplicando TRUNC en la columna de la fecha suprimiría cualquier índice regular en esa columna. Desde el punto de vista del rendimiento, es mejor usar una condición de intervalo de fechas .

Por ejemplo,

WHERE dt_column
BETWEEN 
        TO_DATE('05/29/2015 12:07:58', 'MM/DD/YYYY HH24:MI:SS')
AND     
        TO_DATE('05/29/2015 12:07:58', 'MM/DD/YYYY HH24:MI:SS') +1