8位格式日期(20181112)加减天数简单运算

本文介绍在Hive中如何处理8位格式日期,通过转换为时间戳并进行加减运算,最终返回8位格式日期的解决方案。讨论了使用date_add()函数的局限性,并提供了两种有效的方法来解决这一问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

场景:要求8位格式日期+8天后仍显示8位格式日期
问题点:date_add()函数不支持8位格式日期,只识别10位格式日期(%Y-%m-%d)

方法一:用unix_timestamp(string date, string pattern)转换成时间戳后再用from_unixtime(bigint unixtime, string format)转换成10位格式日期后用date_add()进行加减天数,之后还需要转换成时间戳再转换成8位格式日期时间,如此太过麻烦。

方法二:可以通过将8位格式日期和天数都要转换成时间戳进行加减运算后再转换成8位格式日期。
举例:

hive>   select form_unixtime(cast(unix_timestamp('20181112','yyyyMMdd') + 8 * 86400 as bigint),'yyyyMMdd') from dual;

注意:unix_timestamp(‘20181112’,‘yyyyMMdd’) + 8 * 86400结果为double类型,而from_unixtime(bigint unixtime, string format)要求时间戳为bigint类型,需要用cast()进行格式转换。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值