Provavelmente, o problema é que há um componente de data fracionária que você não está levando em consideração. Você pode ignorar esse componente de data fracionária truncando a coluna em sua consulta:
SELECT section_id, COUNT(student_id) "ENROLLED"
FROM enrollment
WHERE TRUNC(enroll_date) = TO_DATE('2/10/2007', 'MM/DD/YYYY')
GROUP BY section_id
ORDER BY ENROLLED;
Estou assumindo que a coluna
enroll_date
é do tipo de dados DATE. Algumas explicações:a Oracle armazena datas conforme descrito aqui , ele NÃO armazena uma data conforme você afirma "O formato de data em que já está é DD-MON-YY.". Esse é apenas o formato em que você vê a data, que é determinado pelo parâmetro NLS_DATE_FORMAT para sua sessão.
Vamos fazer um teste rápido com uma mesa de teste. Crie a tabela e verifique o formulário NLS_DATE_FORMAT da minha sessão.
create table DATE_TST
( id NUMBER GENERATED BY DEFAULT ON NULL AS IDENTITY,
test_date DATE
);
INSERT INTO date_tst (test_date) VALUES (SYSDATE);
SELECT value
FROM nls_session_parameters
WHERE parameter = 'NLS_DATE_FORMAT';
DD-MON-YYYY
É assim que vou ver minhas datas.
SELECT * FROM date_tst;
04-OCT-2020
Então eu tenho a data de hoje. Legal. Agora vamos ver se consigo consultar usando essa data:
SELECT * FROM date_tst WHERE test_date = TO_DATE('04-OCT-2020','DD-MON-YYYY');
no rows.
Nenhuma linha é mostrada porque o formato de data em que recebo minha data não tem um componente de hora. DATE tem Ano, mês, dia, hora, minuto e segundos. O formato só tem ano, mês e dia. Permite consultar os dados para verificar se existe um componente de tempo.
SELECT TO_CHAR(test_date,'DD-MON-YYYY HH24:MI:SS') FROM date_tst;
4-OCT-2020 21:12:39
Ah aí está... SYSDATE é a hora atual até o segundo. Agora vamos tentar essa consulta novamente com um formato de data mais preciso:
SELECT * FROM date_tst WHERE test_date = TO_DATE('04-OCT-2020 21:12:39','DD-MON-YYYY HH24:MI:SS');
04-OCT-2020
E aí está a nossa fila. O comando TRUNC cortará o componente de tempo:
SELECT TO_CHAR(TRUNC(test_date),'DD-MON-YYYY HH24:MI:SS') FROM date_tst;
04-OCT-2020 00:00:00
Assim, você pode simplificar sua consulta:
SELECT * FROM date_tst WHERE TRUNC(test_date) = TO_DATE('04-OCT-2020','DD-MON-YYYY');
04-OCT-2020