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

Consulta SQL usando dos fechas

'10-MAY-20' no es una fecha, es una cadena. Una fecha no tiene ningún formato, según la configuración de NLS específica de su ubicación, se muestra en un formato legible para humanos usando TO_CHAR y máscara de formato adecuado.

Además, debe evitar el uso de dos dígitos YY representación por año, es la razón principal Y2K error comenzó. Utilice siempre YYYY formato.

Para convertir una cadena en fecha:

Usar TO_DATE y máscara de formato apropiada:

where  date_col > TO_DATE('10-MAY-2020', 'DD-MON-YYYY')  
and    date_col < TO_DATE('13-MAY-2020', 'DD-MON-YYYY')

O bien, utilice ANSI date literal que usa formato fijo 'YYYY-MM-DD' :

where  date_col > DATE '2020-05-10' and date < DATE '2020-05-13'

Otra cosa, DATE es una palabra reservada de Oracle, puede ver la documentación . Tal vez esté utilizando identificador entrecomillado "date" es decir, usar comillas dobles alrededor de la palabra reservada.

Probablemente se deba a que la configuración de NLS de SQL Developer está establecida en 'DD-MON-YY' , por lo que cuando pasa la fecha en ese formato, realiza una conversión implícita a la fecha. Sin embargo, si cambia el formato, no funcionará:

alter session set NLS_DATE_FORMAT = 'YYYY-MM-DD';