hive:常见日期函数

5 篇文章 0 订阅
2 篇文章 0 订阅

1. to_date:日期时间转日期

-- 注:日期字符串必须满足yyyy-MM-dd格式
命令:select to_date('2022-04-29 08:52:14.0');
输出:2022-04-29

2. current_date :当前日期

命令:select current_date();
输出:2022-04-30

3. date_sub : 返回日期前n天的日期

-- 注:日期字符串必须满足yyyy-MM-dd格式
命令:select date_sub('2022-04-29 08:52:14.0',1);
输出:2022-04-28
命令:select date_sub('2022-05-01 08:52:14.0',1);
输出:2022-04-30

4. date_add : 返回日期后n天的日期

-- 注:日期字符串必须满足yyyy-MM-dd格式
命令:select date_add('2022-04-29 08:52:14.0',1);
输出:2022-04-30
命令:select date_add('2022-04-30 08:52:14.0',1);
输出:2022-05-01

5. unix_timestamp:获取当前unix时间戳

-- 注:日期字符串必须满足yyyy-MM-dd格式
命令:select unix_timestamp('2022-04-29 08:52:14.0');
输出:1651193534

6. from_unixtime:转化unix时间戳到当前时区的时间格式

命令:select from_unixtime(1651193535,'yyyy-MM-dd HH:mm:ss.s');
输出:2022-04-29 08:52:15.15

7.current_timestamp:当前的时间字符串

命令:select current_timestamp();
输出:2022-04-30 10:23:18.022

8. 获取日期的年、月、天、小时、分钟、秒

-- 注:日期字符串必须满足yyyy-MM-dd格式
命令:select year('2022-04-29 08:52:14.0');
输出:2022
命令:select month('2022-04-29 08:52:14.0');
输出:4
命令:select day('2022-04-29 08:52:14.0');
输出:29
命令:select hour('2022-04-29 08:52:14.0');
输出:8
命令:select minute('2022-04-29 08:52:14.0');
输出:52
命令:select second('2022-04-29 08:52:14.0');
输出:14

9. trunc:为指定元素而截去的日期值

-- 注:日期字符串必须满足yyyy-MM-dd格式
命令:select trunc('2022-04-29 08:52:14.0','YY');
输出:2022-01-01  --当年的第一天
命令:select trunc('2022-04-29 08:52:14.0','MM');
输出:2022-04-01  --当月的第一天

10. datediff:返回开始日期减去结束日期的天数

-- 注:日期字符串必须满足yyyy-MM-dd格式
命令:select datediff('2022-04-29 08:52:14.0','2022-04-28 08:52:14.0');
输出:1

11. next_day:得到一个字符串日期的下周几的具体日期

-- 注:日期字符串必须满足yyyy-MM-dd格式
命令:select next_day('2022-04-29','sunday');
输出:2022-05-01
命令:select next_day('2022-04-29','sun');
输出:2022-05-01

12. last_day:当月的最后一天日期

-- 注:日期字符串必须满足yyyy-MM-dd格式
命令:select last_day('2022-04-29');
输出:2022-04-30

13. months_between:返回开始日期减去结束日期的月数

-- 注:日期字符串必须满足yyyy-MM-dd格式
----得到的结果不是相差自然月,而是按相差天数得到的相对月份
命令:select months_between(to_date('2022-04-05'), to_date('2022-03-29'));
输出:0.22580644999999999  
命令:select months_between(to_date('2022-04-30'), to_date('2022-03-29'));
输出:1.03225806 
----用floor函数向下取整
命令:select floor(months_between(to_date('2022-04-05'), to_date('2022-03-29')));
输出:0  
命令:select floor(months_between(to_date('2022-04-30'), to_date('2022-03-29')));
输出:1
--用时间戳格式转化一下,以得到相差自然月
命令:select months_between(from_unixtime(unix_timestamp('2022-04-05','yyyy-MM'),'yyyy-MM-dd'), from_unixtime(unix_timestamp('2022-03-29','yyyy-MM'),'yyyy-MM-dd'));
输出:1 

ps:初衷是通过撰写博文记录自己所学所用,实现知识的梳理与积累;将其分享,希望能够帮到面临同样困惑的小伙伴儿。如发现博文中存在问题,欢迎随时交流~~

  • 8
    点赞
  • 73
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值