I Oracle er en DATE
har altid en tidskomponent. Din klient viser måske eller ikke viser tidskomponenten, men den er der stadig, når du forsøger at lave en lighedssammenligning. Du vil også altid sammenligne datoer med datoer i stedet for strenge, der bruger den aktuelle sessions NLS_DATE_FORMAT
for at udføre implicitte konverteringer og dermed gøre dem ret skrøbelige. Det vil involvere enten ANSI-dato-literal eller eksplicit to_date
opkald
Du kan bruge TRUNC
funktion til at afkorte DATE
til midnat
SELECT *
FROM porder
WHERE trunc(odate) = date '2013-10-04'
Eller du kan lave en intervalsammenligning (som vil være mere effektiv, hvis du kan drage fordel af et indeks 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' );