hive日期函数各种用法

1. 获取当前时间:yyyy-mm-dd

SELECT CURRENT_DATE();

current_date()
2021-12-30

2. 获取当月第一天时间:yyyy-mm-dd

select date_sub(current_date,dayofmonth(current_date)-1);

date_sub(current_date(), (dayofmonth(current_date()) - 1))
2021-12-01

3. 获取下个月第一天时间:yyyy-mm-dd

select add_months(date_sub(current_date,dayofmonth(current_date)-1),1);

add_months(date_sub(current_date(), (dayofmonth(current_date()) - 1)), 1)
2022-017-01

4. 获取当月第几天:yyyy-mm-dd

select dayofmonth(current_date);

dayofmonth(current_date())
30

5. 获取当前日期所在月月末日期:yyyy-mm-dd

select last_day(current_date);

last_day(current_date())
2021-12-31

6. 获取当前日期本周一:yyyy-mm-dd

select date_sub(next_day(CURRENT_DATE,'MO'),7);

date_sub(next_day(current_date(), MO), 7)
2021-12-27

7. 获取当前日期上周一:yyyy-mm-dd

select date_sub(next_day(CURRENT_DATE,'MO'),14);

date_sub(next_day(current_date(), MO), 14)
2021-12-20

8. 获取当前日期上周日:yyyy-mm-dd

select date_sub(next_day(CURRENT_DATE,'MO'),8);

date_sub(next_day(current_date(), MO), 8)
2021-12-26 

9. 获取当前日期本周二:yyyy-mm-dd(获取其他周几调整最后参数)

select date_sub(next_day(CURRENT_DATE,'MO'),6);

date_sub(next_day(current_date(), MO), 6)

2021-12-21


10. 获取当前日期上周二:

yyyy-mm-dd(获取其他周几调整最后参数)

select date_sub(next_day(CURRENT_DATE,'MO'),13) ;

date_sub(next_day(current_date(), MO), 13)
2021-12-21


11. 获取当前时间的前/后几个月时间:

yyyy-mm-dd(调整最后参数)

select add_months(CURRENT_DATE,-3);

2021-09-30

select add_months(CURRENT_DATE,3);
2022-03-30

12. 开始结束时间相差天数

datediff(string enddate, string startdate);

select datediff('2021-12-15','2021-12-20');
-5

13. 从开始时间startdate加上days

date_add(string startdate, int days)

select date_add('2021-12-15', 5);

date_add(CAST(2021-12-15 AS DATE), 5)
2021-12-20

14. 从开始时间startdate减去days

date_sub(string startdate, int days);

select date_sub('2021-12-30', 5);

date_sub(CAST(2021-06-15 AS DATE), 5)
2021-12-25

15. 获取上季度初日期

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

add_months(CAST(concat(CAST(year(current_date()) AS STRING), -, substring(concat(0, CAST(((FLOOR((CAST((month(current_date()) + 2) AS DOUBLE) / CAST(3 AS DOUBLE))) * CAST(3 AS BIGINT)) + CAST(1 AS BIGINT)) AS STRING)), -2, 2147483647), -01) AS DATE), -6)
2021-07-01

16. 获取本季度初日期

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

add_months(CAST(concat(CAST(year(current_date()) AS STRING), -, substring(concat(0, CAST(((FLOOR((CAST((month(current_date()) + 2) AS DOUBLE) / CAST(3 AS DOUBLE))) * CAST(3 AS BIGINT)) + CAST(1 AS BIGINT)) AS STRING)), -2, 2147483647), -01) AS DATE), -3)
2021-10-01

17.取上个季度同今天时间

select add_months(CURRENT_DATE,-3);

add_months(current_date(), -3)
2021-09-30

18.去年本季度开始时间

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

add_months(CAST(concat(CAST(year(current_date()) AS STRING), -, substring(concat(0, CAST(((FLOOR((CAST((month(current_date()) + 2) AS DOUBLE) / CAST(3 AS DOUBLE))) * CAST(3 AS BIGINT)) + CAST(1 AS BIGINT)) AS STRING)), -2, 2147483647), -01) AS DATE), -15)
2020-10-01

19.去年本季度今日时间

select add_months(CURRENT_DATE,-12);

add_months(current_date(), -12)
2020-12-30

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值