Столбец UPD_DTM
представляется значением TIMESTAMP
, в этом случае я бы порекомендовал
UPDATE Testing
SET STS_CD='02'
WHERE SYSTIMESTAMP - UPD_DTM > INTERVAL '1' DAY
Если вам нужна разница в часах, вы также можете использовать
WHERE SYSTIMESTAMP - UPD_DTM > INTERVAL '24' HOUR
Когда вы используете EXTRACT(HOURS FROM ...)
, тогда вы получаете только значение часа.
Например, EXTRACT(HOUR FROM TIMESTAMP '2018-09-24 15:00:00')- EXTRACT(HOUR FROM TIMESTAMP '2018-09-22 14:00:00')
результат равен просто 1 (час), фактически разница составляет 49 часов, т.е.2 дня и 1 час (+02 01:00:00.000000
)
У вас похожая проблема с EXTRACT(DAY FROM SYSTIMESTAMP)- EXTRACT(DAY FROM UPD_DTM)
, например EXTRACT(DAY FROM TIMESTAMP '2018-09-22 15:00:00')- EXTRACT(DAY FROM TIMESTAMP '2018-08-22 14:00:00')
возвращает 0, хотя разница составляет один месяц!
В случае, если выиметь индекс по столбцу UPD_DTM
, тогда для лучшей производительности предпочтительнее
WHERE UPD_DTM < SYSTIMESTAMP - INTERVAL '1' DAY