获取当前时间
**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)