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

Comparação de datas do Oracle na cláusula where


Não exatamente, o DATE tipo de dados não tem um formato; ele é armazenado internamente em tabelas como 7 bytes (ano é 2 bytes e mês, dia, hora, minuto e segundo são 1 byte cada). A interface do usuário que você está usando (ou seja, SQL/PLUS, SQL Developer, Toad, etc.) lidará com a formatação de um DATE de seu formato binário para um formato legível por humanos. No SQL/Plus (ou SQL Developer), esse formato é baseado no NLS_DATE_FORMAT parâmetro de sessão .

Se a DATE é inserido usando apenas o dia, mês e ano, então o componente de tempo (provavelmente) será definido como 00:00:00 (meia-noite).

Supondo que o componente de tempo para sua coluna DOJ seja sempre meia-noite, então:
SELECT COUNT(*)
FROM   students
WHERE  doj = TO_DATE( your_param, 'dd/mm/yyyy' )

Se nem sempre é meia-noite, então:
SELECT COUNT(*)
FROM   students
WHERE  TRUNC( doj ) = TO_DATE( your_param, 'dd/mm/yyyy' )

ou:
SELECT COUNT(*)
FROM   students
WHERE  doj >= TO_DATE( your_param, 'dd/mm/yyyy' )
AND    doj <  TO_DATE( your_param, 'dd/mm/yyyy' ) + INTERVAL '1' DAY