У меня нет TimeField, которое является символьным полем для раздачи. В среде OpenEdge нормой является сохранение времени в виде целого числа (секунд после полуночи), а затем отображение его в требуемом формате: string (TimeField, "HH: MM: SS").
Если это целое число, вы можете использовать следующий SQL.
SELECT *
FROM ExampleTable
WHERE TIMESTAMPDIFF( SQL_TSI_HOUR, TIMESTAMPADD( SQL_TSI_SECOND, TimeField, DateField ), NOW() ) <= 2
Если ваше TimeField действительно является символьным полем, вы можете использовать:
SELECT *
FROM ExampleTable
WHERE
TIMESTAMPDIFF(
SQL_TSI_HOUR,
TO_TIMESTAMP( CONCAT( CONCAT( TO_CHAR( DateField ), ' ' ), TimeField ) ),
NOW()
) <= 2
Но так как похоже, что в любом случае это будет полное сканирование таблицы, вы можете добавить нормальное предложение where, чтобы ограничить результаты последними двумя днями.
AND DateField > CURDATE() - 2