Как уже объяснялось в другом ответе о разнице между форматами 'YY'
и 'YYYY'
и ее последствиях. Вы можете легко избежать проблем, используя литерал ANSI DATE :
DATE '1989-09-21'
Литерал даты ANSI не содержит временной части и должен быть указан именно в этом формате ('YYYY-MM-DD')
.
Кроме того, HIRE_DATE
- это тип данных DATE , который также имеет часть времени . Поэтому условие WHERE может не возвращать правильные значения:
WHERE HIRE_DATE = TO_DATE('21-09-1989','DD-MM-YY')
Чтобы удалить часть времени, вы должны использовать TRUN C для сравнения только с частью даты:
WHERE TRUNC(HIRE_DATE) = DATE '1989-09-21'