Я натолкнулся на странную странность, пытаясь найти некоторые записи для страховой системы.Кажется, что запрос запускается, когда я говорю select , но при подсчете подсчитывает формат даты ().Немного предыстории, наши даты хранятся в виде целых (да, я знаю, что это ужасно) одним из двух способов.YYMMDD за годы до 2000 года, CYYMMDD за 1999 год.
- 21 октября 1999 года становится 991021
- 21 октября 2000 года становится 1001021.
Вот кодниже, я прокомментировал, что работает, и ошибка включена, когда это не так.IBM около 1980 года - это бордель плохо исполненных идей.
-- returns rows correctly
select * from mudata.hdk01
where date(to_date(to_char(A08 + 19000000, '99999999'), 'YYYYMMDD')) < '01/01/1999'
fetch first 100 rows only;
-- refuses with error
-- java.sql.SQLException: [SQL0181] Value in date, time, or timestamp string not valid.
-- Query 1 of 1, Rows read: 0, Elapsed time (seconds) - Total: 0.093, SQL query: 0.093, Reading results: 0
select count(*) from mudata.hdk01
where date(to_date(to_char(A08 + 19000000, '99999999'), 'YYYYMMDD')) < '01/01/1999'
fetch first 100 rows only;