We just recently upgraded to Oracle 19c and noticed some odd behavior with date comparisons when a process was never running.
Before 19c, we would have a query that did something like this:
select 'x'
from dual
where sysdate = to_date('08/03/2023','MM/DD/YYYY');
Where the to_date value is a date record in our database that doesn't contain hours or minutes. If today's date is the same as the date value in our database, it executes the process.
After 19c, it seems there's a requirement to add trunc(sysdate) around sysdate. It will only return ‘x’ if trunc is added to remove the hours and minutes from sysdate.
Is this a recent change with 19c? This will affect a lot of our processes as we frequently do things like ≤ or ≥ and the equals part of these checks will no longer work.
Edit: False alarm. I think I figured out what has been going on. The actual value of sysdate was a parameter being passed in and the old version of this had an already truncated date passed in. Since new changes were made so that it defaulted the value to sysdate, the lack of trunc was causing the issue.