hive最全面的日期函数

系列文章目录



前言

        收录hive2.1版本中所有的日期函数。

        标红的函数为常用函数。


函数列表

日期函数
分类返回类型函数名入参描述
将时间戳格式化stringfrom_unixtime(bigint unixtime)

秒级时间戳->字符串,

默认pattern为:

yyyy-MM-dd HH:mm:ss

stringfrom_unixtime(bigint unixtime, string pattern])

秒级时间戳->字符串,

同时指定pattern

转换为时间戳bigintunix_timestamp()获取当前时间戳,秒为单位,共10位
bigintunix_timestamp(str)datetime字符串

字符串->时间戳。

示例:unix_timestamp('2009-03-20 11:30:01') = 1237573801

bigintunix_timestamp(str,str)

datetime字符串,

字符串模式

示例:unix_timestamp('2009-03-20', 'uuuu-MM-dd') = 1237532400
字符串格式化为日期

2.1之前,string

2.1开始,date

to_date(string timestamp)

将字符串,

转换为日期,

只有日期部分

提取intyear(string date)提取日期中的"年份"
quarter(date/timestamp/string)

提取日期中的"季度",

根据日期解析季度,

返回数字

month(string date)提取日期中的"月份"
day(string date) dayofmonth(date)提取日期中的"日数"
hour(string date)提取日期时间中的"小时"
minute(string date)提取日期时间中的"分钟"
second(string date)提取日期时间中的"秒数"
weekofyear(string date)提取日期时间中的"周数"
extract(field FROM source)

语法略复杂,

且它的使用场景均可用上述提取函数代替,

故此不作赘述

日期相减intdatediff(string enddate, string startdate)

将两个日期相减,

得到天数

日期加数

pre 2.1.0: string

2.1.0 on: date

date_add(date/timestamp/string startdate, tinyint/smallint/int days)

往一个日期上添加天数

示例:

date_add('2008-12-31', 1)  返回 '2009-01-01'

日期减数

pre 2.1.0: string

2.1.0 on: date

date_sub(date/timestamp/string startdate, tinyint/smallint/int days)

往一个日期上减去天数

示例:

date_sub('2008-12-31', 1)  返回 '2008-12-30'

当前时间datecurrent_date

返回当前日期,

同一个查询中,多次调用该函数,返回同一个值!

timestampcurrent_timestamp

返回当前时间戳,

同一个查询中,多次调用该函数,返回同一个值!

日期-月份加数stringadd_months(string start_date, int num_months, output_date_format)

对一个日期,

进行月份上加数操作

示例:

add_months('2024-03-20', 1)    返回 2024-04-20;

月份加数后,若超过该月实际的天数,自动降为该月的最后一天!

示例:

add_months('2024-03-31', 1)    返回 2024-04-30;

月份最后一天stringlast_day(string date)返回日期所属月份的最后一天
下一天stringnext_day(string start_date, string day_of_week)

计算一个日期之后的,

下一个day of week,

示例:

select next_day('2024-03-21','mo')

返回 2024-03-25,

mo代表Monday,

21号之后的星期一是25号,

支持的day of week:2个字母,3个字母,或者是全拼,

星期一可以是:mo,mon,monday

日期截断stringtrunc(string date, string format)

日期,

截断格式

对一个日期进行截断,

支持年份截断和月份截断,截断格式为:MONTH/MON/MM、YEAR/YYYY/YY

示例如下:

trunc('2015-03-17', 'MM')   返回 2015-03-01,

把当前月份截断,当前月份回到当月第一天!

月份差值doublemonths_between(date1, date2)
日期格式化stringdate_format(date/timestamp/string ts, string pattern)

日期,

格式化字符串

将日期,按照指定的格式化模板,进行格式化,

返回格式化字符串

### Hive 日期函数列表及使用示例 在Hive中,日期函数是处理日期和时间数据的重要工具。以下是一些常用的Hive日期函数及其用法: #### 1. `last_day` 函数 用于获取指定日期所在月份的后一天。 ```sql SELECT last_day('2023-02-15'); -- 返回 2023-02-28 [^1] ``` #### 2. `unix_timestamp` 和 `from_unixtime` `unix_timestamp` 将日期转换为Unix时间戳(以秒为单位),而 `from_unixtime` 则将Unix时间戳转换回日期格式。 ```sql SELECT unix_timestamp('2023-03-01', 'yyyy-MM-dd'); -- 返回 Unix 时间戳 [^1] SELECT from_unixtime(1677619200, 'yyyy-MM-dd'); -- 返回 2023-03-01 [^1] ``` #### 3. `date_format` 用于将日期格式化为指定的字符串格式。可以实现类似 `dayname` 或 `dayofyear` 的功能。 ```sql SELECT date_format('2023-03-15', 'EEEE'); -- 返回 Wednesday [^2] SELECT date_format('2023-03-15', 'D'); -- 返回 74 [^2] ``` #### 4. `add_months` 用于向指定日期添加或减少月份。 ```sql SELECT add_months('2023-03-15', 2); -- 返回 2023-05-15 [^4] SELECT add_months('2023-03-15', -1); -- 返回 2023-02-15 [^4] ``` #### 5. `date_add` 和 `date_sub` 分别用于向日期添加天数或从日期中减去天数。 ```sql SELECT date_add('2023-03-15', 5); -- 返回 2023-03-20 [^3] SELECT date_sub('2023-03-15', 3); -- 返回 2023-03-12 [^3] ``` #### 6. `datediff` 计算两个日期之间的天数差。 ```sql SELECT datediff('2023-03-20', '2023-03-15'); -- 返回 5 [^3] ``` #### 7. `current_date` 和 `current_timestamp` 分别返回当前的日期和当前的时间戳。 ```sql SELECT current_date; -- 返回当前日期 [^4] SELECT current_timestamp; -- 返回当前时间戳 [^4] ``` #### 8. `to_date` 将时间戳或字符串转换为日期类型。 ```sql SELECT to_date('2023-03-15 12:34:56'); -- 返回 2023-03-15 [^4] ``` #### 9. 获取日期区间中的日期列表 通过结合 `lateral view` 和 `posexplode`,可以生成一个日期范围内的所有日期。 ```sql SELECT '2023-03-01' AS start_date, '2023-03-05' AS end_date, date_add('2023-03-01', idx) AS cur_date FROM (SELECT 1) a LATERAL VIEW posexplode(split(space(datediff('2023-03-05', '2023-03-01')), ' ')) tt AS idx, v; -- 返回结果:2023-03-01 至 2023-03-05 的每一天 [^3] ``` --- ### 注意事项 - 在同一个查询中多次调用某些日期函数时,可能会返回相同的结果[^4]。 - 使用日期函数时需注意输入参数的格式是否正确,例如 `yyyy-MM-dd`。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值