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

CÓMO OBTENER DATOS ENTRE 2 FECHAS EN EL DESARROLLADOR ORACLE SQL

Una fecha no tiene formato; se almacenada internamente en la base de datos como 7 bytes (que representa año, mes, día, hora, minuto y segundo) y no es hasta que la interfaz de usuario que esté utilizando (es decir, SQL/Plus, SQL Developer, Java, etc.) intente mostrársela a usted, el usuario, y convierta en algo que encontraría significativo (generalmente una cadena) que la fecha tiene un formato.

Para corregir su consulta, solo necesita encerrar la cadena de fecha entre comillas simples y usar YY para que coincida con el formato de año de 2 dígitos (de lo contrario, Oracle asumirá que 17 en el formato YYYY es el año 0017 y el siglo no será como esperas ):

select sum(TOTAL_AMOUNT)
from   table a
where  trn_date between TO_DATE('01-APR-17', 'DD-MON-YY')
                    AND TO_DATE('31-MAR-17', 'DD-MON-YY'); 

Sin embargo, también puede usar literales de fecha (y evitar tener que hacer coincidir el modelo de formato de fecha):

select sum(TOTAL_AMOUNT)
from   table a
where  trn_date between DATE '2017-04-01'
                    AND DATE '2017-05-31';