Hive 日期时间操作

1. 获取当前日期

current_date

在这里插入图片描述

2. 获取当前时间

current_timestamp

在这里插入图片描述

3. 按格式获取当前日期时间

from_unixtime(current_timestamp(),'yyyy-MM-dd HH:mm:ss') 
from_unixtime(current_timestamp(),'yyyy-MM-dd  HH') 
from_unixtime(current_timestamp(),'yyyyMMdd') 

在这里插入图片描述
在这里插入图片描述
hive官方不推荐用了,可以用current_timestamp然后用substr()截取

substr(current_timestamp,1,10)
substr(current_timestamp,1,19)

在这里插入图片描述

4. 前后几个月

add_months(current_timestamp, -6)
add_months(current_timestamp, 6)

add_months(current_date, -6)
add_months(current_date, 6)

add_months('2020-12-01', -6)
add_months('2020-12-01', 6)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5. 前后几天

date_add(current_date, 6)
date_sub(current_date, 6)

date_add(current_date, -6)
date_sub(current_date, -6)

在这里插入图片描述
在这里插入图片描述

6. 计算天数差

datediff(start_time,end_time)

在这里插入图片描述
datediff 在处理date格式 会有坑,会少一天
在这里插入图片描述

7. 计算时间差

(unix_timestamp(start_time)-unix_timestamp(end_time))/3600

在这里插入图片描述

8. 获取日期中的年月日、时分秒以及当前的周数

select year(current_timestamp);   ----返回日期中的年
select month(current_timestamp);  ----返回日期中的月
select day(current_timestamp);    ----返回日期中的日
select hour(current_timestamp);   ----返回日期中的时
select minute(current_timestamp); ----返回日期中的分
select second(current_timestamp); ----返回日期中的秒
select weekofyear(current_timestamp); ----返回日期在当前的周数

在这里插入图片描述

9. 时间戳转为日期

输入的时间戳需要是整数,不能是字符串

select from_unixtime(1606989058,'yyyy-MM-dd HH:mm:ss') ; --秒级
select from_unixtime( cast(1606989066019/1000 as int),'yyyy-MM-dd HH:mm:ss') ;  --毫秒级

在这里插入图片描述

10. 日期转为时间戳

必须是严格的‘yyyyMMdd HH:mm:ss’格式,转换后的是秒级的,不是毫秒级的

select unix_timestamp('2020-12-03 17:51:06');

在这里插入图片描述

11. 根据日期获取星期几

pmod(datediff(current_timestamp, '1920-01-01') - 3, 7) 

输出的结果为0-6的数,分别表示 日,一,二 … 六。
在这里插入图片描述

12. 当月第一天和当月最后一天

trunc(current_timestamp,'MM')   -- 当月第一天                                                           
last_day(current_timestamp)    -- 当月最后一天

在这里插入图片描述

13. 当年第一天和当年最后一天

trunc(current_timestamp,'YY')                      -- 当年第一天                                                           
last_day(add_months(trunc(current_date,'YY'),11))  -- 当年最后一天

在这里插入图片描述

14. 当前星期的下个星期几

next_day(current_timestamp, 'TU')

仅支持下面的格式,忽略大小写

中文23全称
星期一MOMonMonday
星期二TUTueTuesday
星期三WEWedWednesday
星期四THThuThursday
星期五FRFriFriday
星期六SASatSaturday
星期天SUSunSunday

在这里插入图片描述

15. 获取当前日期所在的季度

ceil(month(current_date)/3)
lpad(ceil(month(current_date)/3),2,0)

在这里插入图片描述

16. 时间格式转化

date_format('2023-06-21T17:05:21+08:00', 'yyyy-MM-dd HH:mm:ss')
  • 11
    点赞
  • 67
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TriumPhSK

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值