'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';