其他sql格式也在更新中,可直接查看这个系列,要是没有你需要的格式,可在评论或私信我
procedure脚本自定义值
如果你是接手上一个人的oracle脚本,应该会遇到上一天人写的自定义脚本
oracle 原sql
procedure TS_yuetuifei_23 is
v_Indate date := trunc(sysdate - 1);
v_ErrorCode number;
v_ErrorContent varchar(500);
v_pk_seq varchar2(20);
v_StartDate date;
v_EndDate date;
begin
select
*
from
A a
where
a.createdata = v_Indate
//上面这sql就可以看成
select
*
from
A a
where
a.createdata = trunc(sysdate - 1)
解析:上面的trunc(sysdate - 1)意思就是获取昨天的时间进行提取,trunc这函数可以写两个值,在这里面是显示2021/12/2获取昨天的时间,算了我专门写一期,就在下一篇
链接: oracle中trunc函数讲解
hive 改sql
select
*
from
A a
where
a.createdata = DATE_FORMAT(date_sub(current_timestamp, 1), 'yyyy-MM-dd')
平时会用到的时间函数
//oralce
sysdate
//hive
FROM_UNIXTIME(UNIX_TIMESTAMP() ,'yyyy-MM-dd HH:mm:ss')
//oralce
trunc(sysdate - 1)
//hive
DATE_FORMAT(date_sub(current_timestamp, 1), 'yyyy-MM-dd')
//oralce
max(trunc(a.account_founded_date))
//hive
max(DATE_FORMAT(a.account_founded_date,'yyyy-MM-dd'))
oracle和hive的时间函数转换
具体的时间转换看这个吧
链接: oracle和hive的时间函数转换.
拼接字段||
oracle原sql
procedure aa is
v_Indate date := trunc(sysdate - 1);
begin
select
'000127'||to_char(v_Indate,'YYYYMMdd')||'2'||'23'||'1'||lpad(rownum,6,'0') as TransactionNo
from
A a
hive改sql
select
concat('000127', DATE_FORMAT(date_sub(CURRENT_TIMESTAMP, 1), 'yyyyMMdd'), '2231', lpad((row_number() over (order by 1)) , 6, '0')) as TransactionNo
from
A a
这个是拼接一串数据出来 000127 20211203 2231 000000
----------------------------------编号-----今天的日期 —233----六位数的数字(0到999999)