1.变量中文重命名:

hive sql 和SAS用中文进行变量重命名时要用反向引号(键盘1左边那个键位)

2.日期格式转化

year(H.l_date)*100 + month(H.l_date) as yue; 202001
date_format(active_date,\’%Y-%m\’)=\’2020-01\’
DATE_FORMAT(ACTIVE_DATE,”yMM”)=\’202001\’
其他日期格式:yyyymmdd, 年月日;
    yyyymm,年月;
    mm,月
    dd,日
    yyyy-mm-dd
    yyyy-mm
    yyyymmddhh24miss,年月日时分秒
    yyyy-mm-dd hh24:mi:ss
    hh24miss
    yyyymmddhh24missff3,年月日时分秒毫秒

3.间隔天数:
datediff(2019-09-01,2019-08-01) 返回31
4.返回日期格式:
to_date(2019-09-01 18:30:00) 返回2019-09-01
5.返回月初:
trunc(current_date,\’MM\’) 返回本月1号
返回上月末:
last_day(add_months(current_date(),-1))
6.返回n天前:
date_sub(2019-09-01 18:30:00,31) 返回2019-08-01

date_sub(\’2016-08-01\’,1) 表示 2016-07-31

date_add(\’2016-08-01\’,-1)
输出:2016-07-31

7.返回n个月前:
add_months(current_date(),-1) 前移一个月
8.上月放款:
active_date>=trunc(add_months(current_date(),-1),”MM”) and
active_date<=last_day(add_months(current_date(),-1))

9.${p}
sql查询命令运行后提供选择
10.字段拼接:
concat(“a”,m.loan_init_term) as `期数`
concat(\’2018\’,\’08\’) 返回201808
concat_ws(string SEP, string A, string B…)返回输入字符串连接后的结果,SEP表示各个字符串间的分隔符
hive> select concat_ws(\’,\’,\’ab\’,\’cd\’,\’e\’) from test1;
返回:ab,cd,e
11.nvl(x,y) Returns y if x is
null else return x
12.mod(n1,n2) 
返回n1 除以n2 的余数。返回值的正负和n1相关。
13.pmod(n1,n2) 
返回n1 除以n2 的余数绝对值
14. 切片
substr(string A, int start, int len)或者substring(string
A, int start, int len) 
hive> select substr(‘string’,3,3) from test; 
rin
hive>select substring(‘string’,3,3) from test; 
ing

15.公式替换:
regexp_replace(string A, string B, string C) 
返回值: string,说明:将字符串A中的符合Java正则表达式B的部分替换为C。注意,在有些情况下要使用转义字符
举例:hive> select
regexp_replace(\’string\’,\’rin\’,\’ron\’) from ccs_acct
返回strong

16.去重(取最新时点记录)
row_number() over(partition by acct_nbr order by create_time desc) as rn where
rn=1
17.等额本息计算(excel)
每月还款额=-PMT(月利率,月数,放款总额,0) 
18.等额本金计算
每月还款额=月均本金+(放款金额-月均本金*i)*月利率
19.通配符
where city like \'[ALN]%\’—-筛选city 以‘A’,‘L’,‘N’开头的记录
where city like \’ne%\’—–筛选city以\’ne\’开头的记录
where city like \’%ne%\’—–筛选city包含\’ne\’的记录
where city like \’_enan\’—–筛选city第一个字符之后是\’enan\’的记录
20.其他日期相关汇总: 
from_unixtime:转化unix时间戳到当前时区的时间格式 
select from_unixtime(1587361271,\’yyyyMMdd\’) from ccs_acct 
输出:20200420 
unix_timestamp:获取当前unix时间戳 
select unix_timestamp(); 
输出:1587361271 
select unix_timestamp(\’2020-04-20 14:20:03\’) from ccs_acct
输出:1587363603
select unix_timestamp(\’2020-04-19 14:20:03\’) from ccs_acct 
输出:1587277203

hour:返回日期中的小时 
select hour(\’2020-04-20 14:20:03\’); 
输出:14

minute:返回日期中的分钟 
select minute(\’2020-04-20 14:20:03\’); 
输出:20 

second:返回日期中的秒 
select second(\’2020-04-20 14:20:03\’); 
输出:3

weekofyear:返回日期在当前周数 
select weekofyear(\’2020-04-20 14:20:03\’); 
输出:17

 

版权声明:本文为lvzw原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/lvzw/p/12737630.html