Hi Mahesh,
it's not a bug.
ADD_MONTHS is not a Standard SQL function, so there are no common rules how to implement it and Oracle uses a different rule than Teradata. Btw, both rules have some disadvantage :-)
Which release are you running?
In TD14 there's a built-in OADD_MONTHS, before there's a bunch of Oracle UDFs which include this and on 13.10 you could simply implement a SQL UDF:
REPLACE FUNCTION OADD_MONTHS
(
cdate DATE,
incr INT
)
RETURNS DATE
SPECIFIC oadd_months_dt
RETURNS NULL ON NULL INPUT
CONTAINS SQL
DETERMINISTIC
COLLATION INVOKER
INLINE TYPE 1
RETURN
CASE
WHEN EXTRACT(MONTH FROM cdate) <> EXTRACT(MONTH FROM cdate+1)
THEN ADD_MONTHS(cdate+1,incr)-1
ELSE ADD_MONTHS(cdate,incr)
END
;
REPLACE FUNCTION OADD_MONTHS
(
cdate TIMESTAMP(6),
incr INT
)
RETURNS DATE
SPECIFIC oadd_months_ts
RETURNS NULL ON NULL INPUT
CONTAINS SQL
DETERMINISTIC
COLLATION INVOKER
INLINE TYPE 1
RETURN OADD_MONTHS(CAST (cdate AS DATE), incr);
;
You have to change all occurence of ADD_MONTHS to OADD_MONTHS anyway, maybe it's already implemented.
Dieter
↧