SQL Code running perfectly in oracle 11g not running after upgrading to 19c

In 11g, this code is running and returning a value. But after upgrading to 19c, this code returns an error ORA-01843: not a valid month.

note: if we comment rn=1 (where condition in out block), then the query is running

enter image description here


Solution 1:

Don't compare dates to strings. Should be

and trunc(e.created_date) = date '2021-12-19'
                            -----------------
                            -- This is DATE datatype

because - what you used, is wrong

and trunc(e.created_date) = ('19-DEC-21')
                            -------------
                            -- This is a STRING

Why is it wrong? Because it depends on NLS settings. Apparently, those two databases differ in them. You were "lucky" in 11g as Oracle managed to implicitly convert that string to a valid DATE datatype value.