hive常用日期函数梳理

  • to_date : 时间转日期
select to_date("2019-09-19 00:00:00");
输出:2019-09-19
  • from_unixtime : 转化unix时间戳到当前时区的时间格式,格式可指定
select from_unixtime(1568778184, 'yyyy-MM-dd HH:mm:ss');
输出:2019-09-18 11:43:04
  • unix_timestamp : 获取当前unix时间戳
select unix_timestamp();
输出:1568778184
select unix_timestamp('2019-09-18 12:43:04');
输出:1568781784
  • year/month/day/hour/minute/second/weekofyear : 返回日期中指定的部分
select year('2019-09-18 12:43:04');
输出:2019
select month('2019-09-18 12:43:04');
输出:9
select day('2019-09-18 12:43:04');
输出:18
select hour('2019-09-18 12:43:04');
输出:12
select minute('2019-09-18 12:43:04');
输出:43
select second('2019-09-18 12:43:04');
输出:4
select weekofyear('2019-09-18 12:43:04');
输出:38
  • datediff : 返回开始日期减去结束日期的天数
select datediff('2019-09-20','2019-09-18');
输出:2

# 后面加上时分秒是不参与计算的
select datediff('2019-09-20 01:00:00','2019-09-18 00:00:00');
输出:2

# 第一个参数 - 第二个参数
select datediff('2019-09-20','2019-09-23');
输出:-3
  • date_sub : 返回日期前n天的日期
# 仅返回日期
select date_sub('2019-09-20 12:00:00',4);
输出:2019-09-16

select date_sub('2019-09-20',4);
输出:2019-09-16
  • date_add : 返回日期后n天的日期
# 仅返回日期
select date_add('2019-09-20 12:00:00',4);
输出:2019-09-24

select date_add('2019-09-20',4);
输出:2019-09-24
  • from_unixtime + unix_timestamp Hive中yyyymmdd和yyyy-mm-dd日期之间的切换
# 先转换成时间戳,然后再转换成指定的时间格式
# 20190920 -> 2019-09-20
select from_unixtime(unix_timestamp('20190920','yyyymmdd'),'yyyy-mm-dd') from dual;

# 2019-09-20 -> 20190920
select from_unixtime(unix_timestamp('2019-09-20','yyyy-mm-dd'),'yyyymmdd') from dual;
  • 获取指定日期是星期几
# 1 2 3 4 5 6 7
select IF(pmod(datediff('2019-09-20', '1920-01-01') - 3, 7)='0', 7, pmod(datediff('2019-09-20', '1920-01-01') - 3, 7));
输出:5
  • 获取指定日期的上个月的最后一天和指定日期第一天
# 获取指定日期第一天
select trunc('2019-08-05','MM');
输出:2019-08-01

# 指定日期的上个月的最后一天
select date_sub(trunc('2019-08-01 00:00:00','MM'),1);
或者 select date_sub(trunc('2019-08-01','MM'),1);
输出:2019-07-31

# 当前时间的上个月的最后一天
select date_sub(trunc(CURRENT_TIMESTAMP,'MM'),1);
输出:2019-08-31
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值