I Oracle, en DATE
har alltid en tidskomponent. Din klient kan eller kanske inte visar tidskomponenten, men den finns fortfarande där när du försöker göra en jämställdhetsjämförelse. Du vill också alltid jämföra datum med datum snarare än strängar som använder den aktuella sessionens NLS_DATE_FORMAT
för att göra implicita omvandlingar och därmed göra dem ganska ömtåliga. Det kommer att involvera antingen ANSI-datumbokstav eller explicit to_date
samtal
Du kan använda TRUNC
funktion för att trunkera DATE
till midnatt
SELECT *
FROM porder
WHERE trunc(odate) = date '2013-10-04'
Eller så kan du göra en intervalljämförelse (vilket blir mer effektivt om du kan dra nytta av ett index på odate
)
SELECT *
FROM porder
WHERE odate >= to_date( '04-Oct-2013', 'DD-Mon-YYYY' )
AND odate < to_date( '05-Oct-2013', 'DD-Mon-YYYY' );