hive获取某日期是今年第几天

一、函数:datediff(string enddate, string startdate) 求开始和结束时间相差的天数

二、举例1:获取2021-08-01为今年的第几天

hive > select datediff('2021-08-01','2020-12-31');
OK
_c0
213
Time taken: 0.767 seconds, Fetched: 1 row(s)

三、举例2:获取字段内的时间是当年的第几天

hive > select ds,datediff(ds, concat(year(ds)-1,'-12-31')) from dual ;
OK
ds             _c1
2020-09-28      272
2020-10-28      302
2020-11-05      310
2020-11-12      317
2020-12-11      346
2020-12-31      366
2021-01-01      1
2021-02-01      32
2021-02-04      35
2021-02-06      37
Time taken: 0.968 seconds, Fetched: 10 row(s)

四、其他相关时间函数(转载:hive时间函数应用获取当前时间 - 知乎
1.    获取当前时间: CURRENT_DATE
SELECT CURRENT_DATE;

2. 获取当月第一天时间:date_sub
select date_sub (current_date,dayofmonth(current_date)-1);

3. 获取下个月第一天时间:add_months
select add_months(date_sub(current_date,dayofmonth(current_date)-1),1);

4. 获取当月第几天:dayofmonth
select dayofmonth(current_date);

5. 获取当前日期所在月月末日期:last_day
select last_day(current_date);

6. 获取当前日期本周一:date_sub
select date_sub(next_day(CURRENT_DATE,'MO'),7);

7. 获取当前日期上周一:date_sub
select date_sub(next_day(CURRENT_DATE,'MO'),14);

8. 获取当前日期上周日:
select date_sub(next_day(CURRENT_DATE,'MO'),8);

9. 获取当前日期本周二:(获取其他周几调整最后参数)
select date_sub(next_day(CURRENT_DATE,'MO'),6);

10. 获取当前日期上周二:(获取其他周几调整最后参数)
select date_sub(next_day(CURRENT_DATE,'MO'),13) ;

11. 获取当前时间的前/后几个月时间:(调整最后参数)
select add_months(CURRENT_DATE,-3);

12. 开始结束时间相差天数
datediff(string enddate, string startdate)

13. 从开始时间startdate加上days
date_add(string startdate, int days)

14. 从开始时间startdate减去days
date_sub(string startdate, int days)

15. 获取上季度初日期=(quarter方法hive不支持需通过其他方式)
select add_months(concat(year(CURRENT_DATE),'-',substr(concat('0',floor((month(CURRENT_DATE)+2)/3)*3+1),-2),'-01'),-6);

16. 获取本季度初日期=(quarter方法hive不支持需通过其他方式) 

select add_months(concat(year(CURRENT_DATE),'-',substr(concat('0',floor((month(CURRENT_DATE)+2)/3)*3+1),-2),'-01'),-3);


17.取上个季度同今天时间
select add_months(CURRENT_DATE,-3)

18.去年本季度开始时间
select add_months(concat(year(CURRENT_DATE),'-',substr(concat('0',floor((month(CURRENT_DATE)+2)/3)*3+1),-2),'-01'),-15);
19.去年本季度结束时间
select add_months(CURRENT_DATE,-12);
 

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值