Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Consulta SQL usando duas datas


'10-MAY-20' não é uma data, é uma string. Uma data não tem nenhum formato, com base em suas configurações NLS específicas de localidade, ela é exibida em um formato legível usando TO_CHAR e máscara de formato adequado.

Além disso, você deve evitar usar dois dígitos YY representação por ano, esse é o motivo Y2K bug iniciado. Sempre use YYYY formato.

Para converter uma string em data:

Usar TO_DATE e máscara de formato apropriado:
where  date_col > TO_DATE('10-MAY-2020', 'DD-MON-YYYY')  
and    date_col < TO_DATE('13-MAY-2020', 'DD-MON-YYYY')

Ou use ANSI date literal que usa o formato fixo 'YYYY-MM-DD' :
where  date_col > DATE '2020-05-10' and date < DATE '2020-05-13'

Outra coisa, DATE é uma palavra reservada da Oracle, você pode ver a documentação . Talvez você esteja usando identificador entre aspas "date" ou seja, usando aspas duplas ao redor da palavra reservada.

Provavelmente porque suas configurações de NLS do SQL Developer estão definidas como 'DD-MON-YY' , então quando você passa a data nesse formato ele faz uma conversão implícita para data. No entanto, se você alterar o formato, não funcionará:
alter session set NLS_DATE_FORMAT = 'YYYY-MM-DD';