Hi, We are migrating our database from Oracle to Postgresql. In oracle we have used this syntax "SELECT ('1999-12-30'::DATE) - ('1999-12-11'::DATE)" to get difference between two dates as a integer output (ex: 19). But in Postgres the same query returns result as "19 days". Because of this we are getting errors while assigning this query output to a numeric variable saying "ERROR: invalid input syntax for type numeric: "1825 days"" and "ERROR: operator does not exist: interval + integer". To avoid changing the application code in many places to extract the number of days alone, we tried operator overloading concept as below. CREATE OR REPLACE FUNCTION public.dt_minus_dt( CREATE OPERATOR public.- ( When we execute "SELECT ('1999-12-30'::DATE) -
('1999-12-11'::DATE)", we are still getting "19 days" as result
and not "19" as we expect. The above same function works as
expected for the operator + or ===. CREATE OPERATOR public.+ ( SELECT ('1999-12-30'::DATE) + ('1999-12-11'::DATE) CREATE OPERATOR public.=== ( SELECT ('1999-12-30'::DATE) === ('1999-12-11'::DATE)
I really appreciate anyone's help in resolving this case. Thanks
in advance. Rajesh
S
|