Nejpravděpodobnějším problémem je, že existuje část zlomkového data, kterou neberete v úvahu. Tuto komponentu zlomkového data můžete ignorovat zkrácením sloupce v dotazu:
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;
Předpokládám, že sloupec enroll_date
je datového typu DATE.
Nějaké vysvětlení:Oracle ukládá data, jak je popsáno zde , NEULOŽÍ datum, jak uvádíte "Formát data, který je již ve formátu DD-MON-YY.". To je pouze formát, ve kterém vidíte datum, který je určen parametrem NLS_DATE_FORMAT pro vaši relaci.
Udělejme rychlý test s testovací tabulkou. Vytvořte tabulku a zkontrolujte NLS_DATE_FORMAT z mé relace.
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
Takto uvidím svá data.
SELECT * FROM date_tst;
04-OCT-2020
Tak mám dnešní datum. Chladný. Nyní se podíváme, zda mohu zadat dotaz pomocí tohoto data:
SELECT * FROM date_tst WHERE test_date = TO_DATE('04-OCT-2020','DD-MON-YYYY');
no rows.
Nejsou zobrazeny žádné řádky, protože formát data, ve kterém dostávám své datum, nemá časovou složku. DATE má rok, měsíc, den, hodinu, minutu a sekundy. Formát má pouze rok, měsíc a den. Umožňuje dotazovat se na data a zkontrolovat, zda existuje časová složka.
SELECT TO_CHAR(test_date,'DD-MON-YYYY HH24:MI:SS') FROM date_tst;
4-OCT-2020 21:12:39
Aha, je to... SYSDATE je aktuální čas až do sekundy. Nyní zkusme tento dotaz znovu s přesnějším formátem data:
SELECT * FROM date_tst WHERE test_date = TO_DATE('04-OCT-2020 21:12:39','DD-MON-YYYY HH24:MI:SS');
04-OCT-2020
A tady je naše řada. Příkaz TRUNC odřízne časovou složku:
SELECT TO_CHAR(TRUNC(test_date),'DD-MON-YYYY HH24:MI:SS') FROM date_tst;
04-OCT-2020 00:00:00
Takže můžete svůj dotaz zjednodušit:
SELECT * FROM date_tst WHERE TRUNC(test_date) = TO_DATE('04-OCT-2020','DD-MON-YYYY');
04-OCT-2020