In Oracle, een DATE
heeft altijd een tijdscomponent. Uw klant kan de tijdcomponent wel of niet weergeven, maar deze is er nog steeds wanneer u een gelijkheidsvergelijking probeert te maken. U wilt ook altijd datums vergelijken met datums in plaats van strings die de NLS_DATE_FORMAT
van de huidige sessie gebruiken om impliciete conversies uit te voeren, waardoor ze nogal kwetsbaar worden. Dat omvat ofwel letterlijke ANSI-datums of expliciete to_date
oproepen
U kunt de TRUNC
. gebruiken functie om de DATE
. af te kappen tot middernacht
SELECT *
FROM porder
WHERE trunc(odate) = date '2013-10-04'
Of u kunt een bereikvergelijking doen (wat efficiënter is als u kunt profiteren van een index op odate
)
SELECT *
FROM porder
WHERE odate >= to_date( '04-Oct-2013', 'DD-Mon-YYYY' )
AND odate < to_date( '05-Oct-2013', 'DD-Mon-YYYY' );