hive获取月份_【Hive】Hive中常用日期函数整理

前言

     使用hive进行时间处理的过程中,有时忘记一些常用的函数用法,现整理一下hive中常用日期函数,当做备忘录使用,忘记来翻阅一下。

cb1dd0770aff5ff816db90142e1e4c63.png

1 时间戳转化日期函数

    时间戳必须是10位,默认情况下转化为'yyyy-MM-dd HH:mm:ss'格式日期,若需要转化其他格式日期,需要说明转化日期格式。

select from_unixtime('1566390082'), from_unixtime('1566390082', 'yyyy-MM-dd'), from_unixtime('1566390082', 'yyyyMMdd')2019-08-21 20:21:22  2019-08-21  20190821

2 日期转化为时间戳函数

      默认情况下要求日期格式为'yyyy-MM-dd HH:mm:ss',其他格式日期需要说明日期格式,不然结果为NULL

select unix_timestamp('2019-08-21 20:21:22'),  ---日期格式为默认格式unix_timestamp('2019-08-21'), ---日期格式不满足'yyyy-MM-dd HH:mm:ss',没有指定日期格式,出错unix_timestamp('2019-08-21', 'yyyy-MM-dd')1566390082  NULL  1566316800

3 日期格式化函数

    date_format函数将字符串或者日期转化为指定格式的日期, to_date函数直接将长日期转化为短日期

select date_format('2019-08-21 20:21:22', 'yyyy-MM-dd'), date_format('2019-08-21 20:21:22', 'yyyyMMdd')2019-08-21  20190821
select to_date('2019-08-21 20:21:22'), to_date('2019-08-21 20:21')2019-08-21  2019-08-21

4 获取年、月、日、天、小时、分钟、秒、周数、星期几、季节函数

select year('2019-08-21 20:21:22'),  --年month('2019-08-21 20:21:22'),--月day('2019-08-21 20:21:22'),--日hour('2019-08-21 20:21:22'),--小时minute('2019-08-21 20:21:22'),--分钟second('2019-08-21 20:21:22'),--秒weekofyear('2019-08-21 20:21:22'),--第几周dayofweek('2019-08-21 20:21:22'),--星期几ceil(month('2019-08-21 20:21:22')/3)--季节2019  8  21  20  21  22  34  4  3

5 日期(月份)增减函数

    日期往后推几天,使用date_add函数,日期往前推几天,使用date_sub函数;

    月份往后推几个月,使用add_months函数,参数为正数;月份往前推几个月,参数为负数;

select date_add('2019-08-21',10), date_sub('2019-08-21',10),       add_months('2019-08-21',1), add_months('2019-08-21',2),       add_months('2019-08-21',-1), add_months('2019-08-21',-2)2019-08-31  2019-08-11  2019-09-21  2019-10-21  2019-07-21  2019-06-21

6 两个日期(月份)相减函数

    日期相减使用date_diff函数,返回相差天数,月份相减使用months_between,返回相差月份,不足月为小数

select datediff('2019-08-23', '2019-08-21'),       months_between('2019-08-21', '2019-07-25')2  0.87096774

若计算两个之间相差的小时数,可以使用:

select hour('2019-08-23 10:11:12')-hour('2019-08-21 12:20:20') + (datediff('2019-08-23 10:11:12','2019-08-21 12:20:20'))*2446

7 获取月初(月末)、年初(年末)日期

    获取月末日期使用last_day函数,获取月初日期使用trunc(,'MM')函数;获取年初日期使用trunc(,‘YY’)函数,使用date_sub(add_months(trunc('', 'YY'),12),1)获取年末日期

select last_day('2019-08-12'),  --月末trunc('2019-08-21', 'MM'),  --月初trunc('2019-08-21', 'YY'),  --年初date_sub(add_months(trunc('2019-08-21', 'YY'),12),1) --年末2019-08-31  2019-08-01  2019-01-01  2019-12-31

8 获取日期的下个星期几的日期

    使用函数next_day获取日期下个星期几的日期,参数周一:MO;周二:TU;周三:WE ;周四:TH ;周五:FR ;周六:SA;周日SU

select next_day('2019-08-21', 'MO'), next_day('2019-08-21', 'TU'),next_day('2019-08-21', 'WE'),next_day('2019-08-21', 'TH'),next_day('2019-08-21', 'FR'),next_day('2019-08-21', 'SA'),next_day('2019-08-21', 'SU')2019-08-26  2019-08-27  2019-08-28  2019-08-22  2019-08-23  2019-08-24  2019-08-25
  • 10
    点赞
  • 59
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值