DATE
с в Oracle включают часы, минуты и секунды.
Таким образом, если нет RECORDDATE
с точно в 00:00:00 в данном месяце, предикат where recorddate = TO_DATE(2018, 'YYYY')
не найдетчто-либо для сопоставления.
Во втором запросе to_date(recorddate,'YYYY')
не является допустимым синтаксисом для использования to_date
.Пожалуйста, смотрите to_date для получения дополнительной информации.
Если вы пытаетесь найти все RECORD
s с RECORDDATE
s в 2018 году, есть много способов сделать это.Ниже приведено несколько примеров.
CREATE TABLE RECORD (LOREM_IPSUM NUMBER, RECORDDATE DATE);
INSERT INTO RECORD VALUES (1,DATE '2017-05-05');
INSERT INTO RECORD VALUES (2,DATE '2018-05-05');
COMMIT;
SELECT * FROM RECORD;
LOREM_IPSUM RECORDDATE
1 05-MAY-17
2 05-MAY-18
Затем:
SELECT * FROM RECORD WHERE EXTRACT(YEAR FROM RECORDDATE) = 2018;
Результат:
LOREM_IPSUM RECORDDATE
2 05-MAY-18
- Или:
SELECT * FROM RECORD WHERE TO_CHAR(RECORDDATE,'YYYY') = '2018';
Результат:
LOREM_IPSUM RECORDDATE
2 05-MAY-18
Если вам нужны записи за определенный год + месяц, вы можете:
SELECT * FROM RECORD WHERE TRUNC(RECORDDATE,'MM') = DATE '2017-05-01';
Результат:
LOREM_IPSUM RECORDDATE
1 05-MAY-17