hive的日期处理函数及常用需求

获取当前时间

**1.只有日期**
hive (default)> select CURRENT_DATE;
OK
_c0
2019-12-19
Time taken: 0.059 seconds, Fetched: 1 row(s)

2.含时间
hive (default)>  SELECT CURRENT_TIMESTAMP;
OK
_c0
2019-12-19 11:55:43.835
Time taken: 0.07 seconds, Fetched: 1 row(s)

1.date_format函数(根据格式整理日期)

hive (default)> select di from  date_format('2019-02-10','yyyy-MM')  ;
FAILED: SemanticException [Error 10001]: Line 1:16 Table not found 'date_format'
hive (default)> select date_format('2019-02-10','yyyy-MM')  ;
OK
_c0
2019-02
Time taken: 0.053 seconds, Fetched: 1 row(s)

2.date_add函数(加减日期)

select date_add(‘2019-02-10’,1) ;增加用1 ,减少一天用-1

hive (default)> select date_add('2019-02-10',1) ;
OK
_c0
2019-02-11
Time taken: 0.065 seconds, Fetched: 1 row(s)

3.next_day函数(取当前天的下一个周一)

hive (default)> select  next_day('2019-12-19','Mo') ;
OK
_c0
2019-12-23
Time taken: 0.067 seconds, Fetched: 1 row(s)

说明:星期一到星期日的英文(Monday,Tuesday、Wednesday、Thursday、Friday、Saturday、Sunday)

4.last_day函数(求当月最后一天日期)

hive (default)> select  last_day('2019-12-19') ;
OK
_c0
2019-12-31
Time taken: 0.084 seconds, Fetched: 1 row(s)

5.trunc函数(求当月第一天日期)

  • ‘MM’ 当月的第一天
  • ‘YY’ 当年的第一天
hive (default)> select  trunc( '2019-12-19','MM') ;
OK
_c0
2019-12-01
Time taken: 0.06 seconds, Fetched: 1 row(s)

6.日期比较函数

datediff(string enddate, string startdate)

说明: 返回结束日期减去开始日期的天数。

hive (default)> select  datediff('2013-12-08','2012-05-09')
              > ;
OK
_c0
578
Time taken: 0.455 seconds, Fetched: 1 row(s)
hive (default)> 

需求:

1. 例如计算指定日期间的周数(星期一作为一周的开始)

当天不算:例如 2019年12月1日到12月9日只算8天,第9号那一天不算。需要算的话加1
求2019年12月1日到12月19日间有几周
select ceiling(datediff(‘2019-12-19’,next_day(‘2019-12-1’,‘MO’))/7)+1;

hive (default)> select ceiling(datediff('2019-12-19',next_day('2019-12-1','MO'))/7)+1;
OK
_c0
4
Time taken: 0.053 seconds, Fetched: 1 row(s)

2. 今天到年底还有多少天

select datediff(last_day(add_months( trunc( CURRENT_DATE,‘YY’),11 )),CURRENT_DATE);

hive (default)> select datediff(last_day(add_months( trunc( CURRENT_DATE,'YY'),11 )),CURRENT_DATE);
OK
_c0
12
Time taken: 0.084 seconds, Fetched: 1 row(s)

常见的hive函数

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值