У меня следующий запрос. И я рассчитываю на столбец MYDATE
, который является типом данных DECIMAL(8, 0)
, который хранит дату в виде цифры c в формате ГГГГММДД, как этот 20191107.
SELECT DECIMAL((TO_CHAR(TO_DATE(CAST(CAST(MYDATE AS INT) AS VARCHAR(8)), 'yyyymmdd') - 3 MONTHS, 'yyyymmdd')), 8, 0) FROM PDF_TABLE;
Он работает нормально. Однако, когда я использую указанное выше преобразование в предложении WHERE
, как показано ниже, запрос ничего не возвращает.
SELECT * FROM PDF_TABLE WHERE MYDATE = DECIMAL((TO_CHAR(TO_DATE(CAST(CAST(MYDATE AS INT) AS VARCHAR(8)), 'yyyymmdd') - 3 MONTHS, 'yyyymmdd')), 8, 0);
Пример
Выше приведены данные как есть. Теперь я передаю дату 20200601 в качестве параметра в предложении WHERE
следующего запроса, она должна вернуть следующую строку после вычитания 3 месяцев из 20200601.
SELECT * FROM PDF_TABLE WHERE MYDATE = DECIMAL((TO_CHAR(TO_DATE(CAST(CAST(MYDATE AS INT) AS VARCHAR(8)), 'yyyymmdd') - 3 MONTHS, 'yyyymmdd')), 8, 0);