hive中时间日期函数的使用

to_date:日期时间转日期函数
select to_date('2015-04-02 13:34:12');
输出:2015-04-02

from_unixtime:转化unix时间戳到当前时区的时间格式
select from_unixtime(1323308943,’yyyyMMdd’);
输出:20111208

unix_timestamp:获取当前unix时间戳
select unix_timestamp();
输出:1430816254
select unix_timestamp('2015-04-30 13:51:20');
输出:1430373080

year:返回日期中的年
select year('2015-04-02 11:32:12');
输出:2015

month:返回日期中的月份
select month('2015-12-02 11:32:12');
输出:12

day:返回日期中的天
select day('2015-04-13 11:32:12');
输出:13

hour:返回日期中的小时
select hour('2015-04-13 11:32:12');
输出:11

minute:返回日期中的分钟
select minute('2015-04-13 11:32:12');
输出:32

second:返回日期中的秒
select second('2015-04-13 11:32:56');
输出:56

weekofyear:返回日期在当前周数
select weekofyear('2015-05-05 12:11:1');
输出:19

datediff:返回开始日期减去结束日期的天数
select datediff('2015-04-09','2015-04-01');
输出:8

date_sub:返回日期前n天的日期
select date_sub('2015-04-09',4);
输出:2015-04-05

date_add:返回日期后n天的日期
select date_add('2015-04-09',4);
输出:2015-04-13
 

### 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`。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值