sql >> Databasteknik >  >> RDS >> Oracle

Välj från tabell genom att bara veta datum utan tid (ORACLE)

DATE är ett reserverat nyckelord i Oracle, så jag använder kolumnnamnet your_date istället.

Om du har ett index på your_date , skulle jag använda

WHERE your_date >= TO_DATE('2010-08-03', 'YYYY-MM-DD')
  AND your_date <  TO_DATE('2010-08-04', 'YYYY-MM-DD')

eller BETWEEN :

WHERE your_date BETWEEN TO_DATE('2010-08-03', 'YYYY-MM-DD')
                    AND TO_DATE('2010-08-03 23:59:59', 'YYYY-MM-DD HH24:MI:SS')

Om det inte finns något index eller om det inte finns för många poster

WHERE TRUNC(your_date) = TO_DATE('2010-08-03', 'YYYY-MM-DD')

borde vara tillräckligt. TRUNC utan parameter tar bort timmar, minuter och sekunder från ett DATE .

Om prestandan verkligen spelar roll, överväg att sätta ett Function Based Index i den kolumnen:

CREATE INDEX trunc_date_idx ON t1(TRUNC(your_date));


  1. De vanligaste frågorna om JAVA/JRE i Oracle Apps

  2. Hur man använder array_agg() för varchar[]

  3. Verkliga exempel, när man ska använda OUTER / CROSS APPLY i SQL

  4. generera dagar från datumintervall