Вы можете использовать TRUNC(SYSDATE,'IW')
для усечения даты до полуночи понедельника (начало недели ISO), и вы можете использовать это для сравнения значений способом, который не зависит от настроек NLS
для языка даты и территории.
Вы также можете сравнить диапазон, поскольку это позволит Oracle использовать индекс для вашего столбца даты (тогда как использование TRUNC(your_column)
не позволит Oracle использовать индекс и потребует отдельной функции- на основе индекса).
SELECT *
FROM estar.estar_traded_cash_activity
WHERE process_dt >= CASE WHEN TRUNC(SYSDATE) = TRUNC(SYSDATE,'IW')
THEN TRUNC(SYSDATE-3)
ELSE TRUNC(SYSDATE-1)
END
AND process_dt < TRUNC(SYSDATE)