Hive常用的时间相关函数
查看Hive的内置函数
通过show functions可以查看Hive所有的内置函数
通过desc function extended 函数名可以查看函数的具体用法
hive (default)> show functions;
OK
tab_name
array_contains
ascii
asin
assert_true
atan
avg
base64
between
bin
.....
# 查看upper函数的具体用法
hive (default)> desc function extended upper;
OK
tab_name
upper(str) - Returns str with all characters changed to uppercase
Synonyms: ucase
Example:
> SELECT upper('Facebook') FROM src LIMIT 1;
'FACEBOOK'
Time taken: 0.03 seconds, Fetched: 5 row(s)
下面简单介绍一些常用的基础的内置函数,只做简要介绍,具体使用方法可以通过上述方式自己查找一下
常用的时间类函数
-
unix_timestamp(date[, pattern]):将一个日期转换为时间戳
注意:默认的时间格式是yyyy-MM-dd HH:mm:ss,如果日期不是这种格式无法识别,可以在加一个参数,传入自己想要的格式来解决 -
from_unixtime(unix_time, format):将一个时间戳转换为指定的格式
注意:如果format没有指定,就是日期+时分秒 -
to_date(expr):将一个标准的日期时间格式的数据截取日期出来
SELECT to_date(‘2009-07-30 04:17:52’) FROM src LIMIT 1;
‘2009-07-30’ -
year(date):返回一个日期的年
**注意:**日期的格式必须是 ‘yyyy-MM-dd HH:mm:ss’ 或 ‘yyyy-MM-dd’.
Example:SELECT year(‘2009-07-30’) FROM src LIMIT 1;
2009同理,获取月、日等函数为:month day hour minute second
-
weekofyear(date):返回一个日期是这一年的第几周
-
dayofmonth(date):返回日期是这一个月的第几天
-
months_between(date1, date2):返回两个日期的月份之差
SELECT months_between(‘1997-02-28 10:30:00’, ‘1996-10-30’);
3.94959677
注意: 日期的格式必须是标准的日期格式,也可以加上时间 -
add_months(start_date, num_months):日期的月份加一个数
SELECT add_months(‘2009-08-31’, 1) FROM src LIMIT 1;
‘2009-09-30’
如果想让月份减少可以将num_months设置为负 -
datediff(date1, date2) - 返回date1与date2的日期之差
SELECT datediff(‘2009-07-30’, ‘2009-07-31’);
-1如果日期格式中有时分秒的话,时分秒会忽略
-
date_add:
-
date_add(start_date, num_days):日期增加
select date_add(‘2020-12-16’, 1);
2020-12-17
Time taken: 0.047 seconds, Fetched: 1 row(s)
select date_add(‘2020-12-16’, -1);
2020-12-15
Time taken: 0.447 seconds, Fetched: 1 row(s) -
date_sub:和date_add同理,日期减去一个数
-
last_day(date):返回给定日期所属月份的最后一天的日期
SELECT last_day(‘2020-12-16’) FROM src LIMIT 1;
2020-12-31
结语
以上是最近学到的常用的时间函数,若有不足或有误的地方,请多多指正。