Hive内置函数
hive
中内置了很多日期、数值、集合、聚合等内置函数,本文中主要介绍的常见的日期和时间相关的函数。
date(转成date类型)
用来指定某一天具体的日期,将数据转成date类型
1 | select date('2020-11-11') |
date_add(指定日期后n天)
指定日期n天之后:date_add,具体用法为两个参数
- date:以某天为基准
- int:多少天之后
1 | select date_add(date('2020-10-11'), 20) -- 返回结果:2020-10-31 |
date_sub(指定日期前n天)
返回指定日期n天之前的日期,参数是date类型和int类型,返回的是date类型
1 | select date_sub(date('2020-11-11'), 10) -- 返回:2020-11-01 |
date_month(指定日期n月后)
指定日期n月之后:date_add
,具体用法为两个参数
- date:以某天为基准
- int:多少月之后
1 | select date_add(date('2020-10-11'), 2) -- 返回结果:2020-12-11 |
datediff(日期间隔)
计算两个日期之间的相差天数,首先需要将两个日期通过date
函数转成date类型,函数返回的是int
1 | select datadiff(date('2020-11-17'), date('2020-11-11')) -- 返回的结果是6 两个天数之间相差6天 |
dateofmonth(日期的月份)
返回某个具体日期中的月份数据,首先还是要将日期转成date类型
1 | select dateofmonth(date('2020-11-11')) -- 返回的是11 |
weekofyear(周)
返回的是日期在一年中属于第几周,参数必须是date类型,返回值是int
1 | select weekofyear(date('2020-01-01')) -- 返回:1 |
unix_timestamp(日期转成时间戳)
将日期转成unix时间戳,参数是date类型,返回值是bigint
1 | select unix_timestamp(date('2020-11-11')) -- 返回:1605024000 |
to_date(时间戳转成日期)
该函数的作用是返回时间戳中的日期部分,参数是timestamp
类型或者date
类型,返回值是string
1 | select to_date(cast('2020-11-11 12:00:00' as timestamp)) -- 时间戳作为参数 |
year(返回年份)
返回日期或时间戳的年份,参数是date类型或者timestamp类型,返回值是int类型
1 | select year(date('2020-11-11')) -- 返回的是2020 |
quarter(返回季度)
返回的是时间在年份中的季度,参数类型是date类型或者timestamp类型
1 | select quarter(date('2020-09-20')) -- 返回:3 9月份是第三季度 |
month(返回月份)
返回的是时间在年份中的月份,参数类型是date类型或者timestamp类型,返回值是int类型
1 | select month(date('2020-09-20')) -- 返回:9 |
day(返回具体某天)
返回的是时间在年份中的具体某天,参数类型是date类型或者timestamp类型,返回值是int类型
1 | select day(date('2020-09-20')) -- 返回:20 |
hour+minute+second(返回小时+分钟+秒)
返回具体的小时、分钟、秒,参数类型是时间戳类型
,返回值是int类型
1 | select hour(timestamp('2020-11-17 12:11:36')) -- 分别返回时分秒: 12 11 36 |
current_date(当前日期)
直接返回的是当前的日期
1 | select current_date; -- 2020-11-11 |
current_timestamp(当前时间)
1 | select current_timestamp; -- 2020-11-11 20:09:11 |