Hive常用时间操作函数--持续更新

TRUNC函数

select trunc(current_date(),'MM');
//结果:2022-08-01
select trunc(current_date(),'YY');
//结果:2022-01-01

INTERVAL函数

select current_date() - interval 1 day;
//结果:2022-08-29
select current_date() - interval 1 month;
//结果:2022-07-30
select current_date() - interval 1 year;
//结果:2021-08-30
//还可以减时分秒
还可以按照年月,月日,日时,时分,分秒的格式来间隔
select current_date()  - INTERVAL '1 1' year_month;

求上个月第一天

select trunc(add_months(current_date(),-1),'MM');

动态时间序列

SELECT
  date_add(start_date, indexs) trade_date,1 flag
FROM (SELECT '2022-08-01' AS start_date, '2022-10-11' AS end_date)
  dt lateral VIEW posexplode(split(space(DATEDIFF(end_date, start_date)), '')) dt_sp AS indexs,val;

本周第一天

select DATE_ADD(NEXT_DAY('2022-10-11','MO'),-7);

当前星期几

//周日为0
select pmod(datediff(CURRENT_DATE(),"1920-01-01") - 3,7);

千分位展示

//第一个参数是数字,第二个参数是要舍入的小数位数。如果为0,则结​​果没有小数点
select format_number(898765.099,2);

当前时间上个季度第一天

SELECT date_format(add_months(concat(year(date_sub(current_date(),1)),'-',substr(concat('0',floor((month(date_sub(current_date(),1))+2)/3)*3+1),-2),'-01'),-6),'yyyy-MM-dd') start_date;

当前时间上个季度最后一天

SELECT date_format(add_months(last_day(concat(year(date_sub(current_date(),1)),'-',quarter(date_sub(current_date(),1))* 3,'-01')),-3),'yyyy-MM-dd') end_date;

当前时间本季度第一天和最后一天

//本季度第一天
SELECT date_format(add_months(concat(year(date_sub(current_date(),1)),'-',substr(concat('0',floor((month(date_sub(current_date(),1))+2)/3)*3+1),-2),'-01'),-3),'yyyy-MM-dd') start_date;
//本季最后一天
SELECT date_format(last_day(concat(year(date_sub(current_date(),1)),'-',quarter(date_sub(current_date(),1))* 3,'-01')),'yyyy-MM-dd') end_date;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

归期 

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值