Kemungkinan besar masalahnya adalah ada komponen tanggal pecahan yang tidak Anda perhitungkan. Anda dapat mengabaikan komponen tanggal pecahan itu dengan memotong kolom dalam kueri Anda:
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;
Saya berasumsi bahwa kolom enroll_date
bertipe data DATE.
Beberapa penjelasan:Oracle menyimpan tanggal seperti yang dijelaskan di sini , itu TIDAK menyimpan tanggal saat Anda menyatakan "Format tanggalnya sudah DD-MON-YY.". Itu hanya format tanggal yang Anda lihat, yang ditentukan oleh parameter NLS_DATE_FORMAT untuk sesi Anda.
Mari kita lakukan tes cepat dengan tabel tes. Buat tabel dan periksa NLS_DATE_FORMAT dari sesi saya.
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
Beginilah cara saya melihat teman kencan saya.
SELECT * FROM date_tst;
04-OCT-2020
Jadi saya punya tanggal hari ini. Dingin. Sekarang mari kita lihat apakah saya dapat melakukan kueri menggunakan tanggal tersebut:
SELECT * FROM date_tst WHERE test_date = TO_DATE('04-OCT-2020','DD-MON-YYYY');
no rows.
Tidak ada baris yang ditampilkan karena format tanggal saya mendapatkan tanggal saya tidak memiliki komponen waktu. DATE memiliki Tahun, bulan, hari, jam, menit dan detik. Formatnya hanya memiliki tahun, bulan dan hari. Mari kita query data untuk memeriksa apakah ada komponen waktu.
SELECT TO_CHAR(test_date,'DD-MON-YYYY HH24:MI:SS') FROM date_tst;
4-OCT-2020 21:12:39
Ah itu dia... SYSDATE adalah waktu saat ini hingga detik. Sekarang mari kita coba kueri itu lagi dengan format tanggal yang lebih tepat:
SELECT * FROM date_tst WHERE test_date = TO_DATE('04-OCT-2020 21:12:39','DD-MON-YYYY HH24:MI:SS');
04-OCT-2020
Dan di sanalah barisan kami. Perintah TRUNC akan memotong komponen waktu:
SELECT TO_CHAR(TRUNC(test_date),'DD-MON-YYYY HH24:MI:SS') FROM date_tst;
04-OCT-2020 00:00:00
Jadi Anda dapat menyederhanakan kueri Anda:
SELECT * FROM date_tst WHERE TRUNC(test_date) = TO_DATE('04-OCT-2020','DD-MON-YYYY');
04-OCT-2020