业务需求为计算间隔天数(也即两个日期相减返回数值),因客户方数据库选型多样,开发习惯为Oracle语法,但并不兼容其他平台,导致无法使用一个通用语法跑通多平台。
Oracle及Vertica平台 可用-> TRUNC(SYSDATE, 'DD') - DATE '2023-04-01'来计算天数,但是当目标字段类型为数值型时,Oracle可直接用cast(XX AS NUMERIC(30))进行格式转换,如下图:
但是此语法在Vertica平台不可用,两个日期相减后无法直接进行cast(XX AS NUMERIC(30)) 转换数值,详细报错如下:
提示日期相减出来的结果有时分秒,无法转数值,遂将日期相减的结果进行验证,如下:
对于以上两平台,如想达到脚本通用的话 ,需先将结果转字符再转数值。但当此脚本在GaussDB及TDPG两平台跑数时,亦报错:
首先看TDPG,要明确的时TDPG没有SYSDATE,需使用