В Oracle, DATE
винаги има компонент време. Вашият клиент може или не може да покаже времевия компонент, но той все още е там, когато се опитате да направите сравнение за равенство. Също така винаги искате да сравнявате датите с дати, а не с низове, които използват NLS_DATE_FORMAT
на текущата сесия за извършване на неявни преобразувания, което ги прави доста крехки. Това ще включва или ANSI литерали за дата, или изричен to_date
обаждания
Можете да използвате TRUNC
функция за съкращаване на DATE
до полунощ
SELECT *
FROM porder
WHERE trunc(odate) = date '2013-10-04'
Или можете да направите сравнение на диапазон (което ще бъде по-ефективно, ако можете да се възползвате от индекс на odate
)
SELECT *
FROM porder
WHERE odate >= to_date( '04-Oct-2013', 'DD-Mon-YYYY' )
AND odate < to_date( '05-Oct-2013', 'DD-Mon-YYYY' );