Мне нужно удалить все записи из базы данных H2, сопоставив столбец completed_date
с отметкой текущего времени, где разница в днях больше 1 (или количества дней).
Существует одна проблема ссхема базы данных, в которой completed_date
хранится в виде строки в заданном формате 11-Jan-2018 15:35:30 PM
, т. е. 'dd-MMM-yyyy HH:mm:ss aaa'
.
Есть еще несколько параметров, для которых должно совпадать состояние.
Яполучение этого исключения
Невозможно проанализировать константу "TIMESTAMP" "28-12-2017 03:12:47";Оператор SQL:
Я написал следующий запрос:
delete from TABLE_NAME
where
status = 'status1'
OR status = 'status2'
OR status = 'status3'
AND
TIMESTAMPDIFF(DAY,TO_CHAR(PARSEDATETIME(completed_date,'dd-MMM-yyyy HH:mm:ss
aaa'),'dd-MM-yyyy HH:mm:ss'),CURRENT_TIMESTAMP()) >= 1;
В приведенном выше запросе я обнаружил, что TIMESTAMPDIFF не работает с форматом даты dd-MMM-гггг ЧЧ: mm: ss aaa, поэтому сначала я попытался разобрать его в формате 'dd-MM-гггг ЧЧ: мм: сс', и если использовать этот запрос ниже, он даст мне правильный результат
SELECT TO_CHAR(PARSEDATETIME('2017-OCT-2017 15:49:47 PM','dd-MMM-yyyy
HH:mm:ss aaa')
,'dd-MM-yyyy HH:mm:ss')
Просто дать несколькобольше информации о том, что я кодирую Workfusion, инструмент RPA, который внутренне использует базу данных h2, поэтому, если кто-то из workfusion здесь, они также могут мне помочь.