oracle sql 转换成 hive sql -子查询转关联查询(十二).脚本自定义函数拼接字段如trunc(sysdate - 1),头上的procedure ** is

其他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)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值