1.MONTHS_BETWEEN(sysdate, '2016-06-16 13:45:58')
修改为:
DATEDIFF('month','2016-06-16 13:45:58',sysdate)
说明:修改时前后顺序要替换(后面减去前面),DATEDIFF用来计算日期相减,第一个参数代表日期类型,包括'year'、'month'、'day'、'hour'、'minute'、'second'、'ms'、'quarter'、'week'、'dayofyear'、'weekday'等。
2. year(now())
修改为:
DATEPART('year',now())
说明:与DATEDIFF类似,DATEPART第一个参数也可以是上面的内容。
3. add_days(last_day(ADD_MONTHS(sysdate,-12*5)),1)
修改为:
DATEADD('day',1,last_day(ADD_MONTHS(sysdate,-12*5)))
说明:金仓数据库支持ADD_MONTHS,不支持ADD_DAYS,与DATEDIFF类似,DATEADD 第一个参数也可以是上面的内容。
4. stuff(ID,7,1,'6')
修改为:
OVERLAY(ID PLACING '6' FROM 7 FOR 1)
说明:原来1,2,3,4四个位置在OVERLAY函数中变为1,4,2,3。
5. ceil(sysdate -RUN_DATE)/365)
修改为:
CEIL(DATEDIFF('day',RUN_DATE,sysdate)/365)
说明:金仓数据库CEIL函数内日期不能直接相减,用前面提到的DATEDIFF函数替换。
6. REGEXP_INSTR(MODEL_NAME,'\d|-|-|/|_')
修改为:
position(substring(MODEL_NAME from '\d|-|-|/|_') in MODEL_NAME)
说明:用position加substring函数替换REGEXP_INSTR函数。
7. TO_DATE((LAST_DAY(SUBSTR(V_STATS_DATE,1,4) || SUBSTR(V_STATS_DATE,5,6) || '-01')|| ' 23:59:59.999'), 'YYYY-MM-DD HH24:MI:SS')
修改为:
TO_DATE((LAST_DAY(SUBSTR(V_STATS_DATE,1,4) ||'-'|| SUBSTR(V_STATS_DATE,5,2) || '-01')|| ' 23:59:59.999'), 'YYYY-MM-DD HH24:MI:SS')
说明:下面比上面多一个||'-'||,V_STATS_DATE字段的内容为年月,例如'202106',年月之间应该加个'-',SUBSTR函数后面应该为5,2,上面写成5,6没有报错是因为数据只有6位,不会截取到后面的内容。
8. select LISTAGG(ONWTYPE_NAME,',') WITHIN GROUP(ORDER BY ONWTYPE_NAME),EVARED_ID from SG_PATR_JIT_REVALDETAILRECORD group by EVARED_ID;
修改为:
select STRING_AGG(ONWTYPE_NAME,','),EVARED_ID from SG_PATR_JIT_REVALDETAILRECORD group by EVARED_ID;
说明:用STRING_AGG函数替换LISTAGG函数。