【HQL实用】时间格式YYYYMMDD转换成YYYY-MM-DD

背景:今天新来得业务爸爸去查数看到日期是‘20220922’格式难受了,问我有没有法子转换成带日期‘-’形式,即‘2022-09-22’。

涉及的函数:

unix_timestamp 

from_unixtime 

【Hive SQL】常用日期函数汇总:


错误思路:我寻思这不挺简单的吗?直接给你安排上 to_date 不就完事儿了。

select to_date('20220922,yyyy-mm-dd');

result

+----+
| c0 |
+----+
|null|
+----+

so好像在HQL这条路是行不通的。


于是就找了下HQL的时间函数发现这两兄弟

unix_timestamp 

语法

unix_timestamp([expr [, fmt] ] )

返回当前时间或指定时间的 UNIX 时间戳。

  • expr:采用有效日期/时间格式的可选日期、时间戳或字符串表达式。
  • fmt:在 expr 为字符串时,指定格式的可选字符串表达式。

from_unixtime 

语法

from_unixtime(unixTime [, fmt])

在 fmt 中返回 unixTime

  • unixTime:BIGINT 表达式,表示自 1969-12-31 16:00:00 以来已经过去的秒数。
  • fmt:可选的具有有效格式的 STRING 表达式。

使用案例

SELECT unix_timestamp('2022-09-22 07:07:07','yyyy-MM-dd HH:mm:ss') ;
SELECT unix_timestamp('2022/09/22 07:07:07','YYYY/MM/DD HH:mm:ss') ;
-------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------
                                   我是分割线
-------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------

SELECT from_unixtime(2120212212,'yyyy-MM-dd HH:mm:ss'); 
SELECT from_unixtime(2120212212,'yyyy/MM/dd HH'); 
SELECT from_unixtime(2120212212,'yyyyMMdd '); 

可以看到无论是 unix_timestamp  或者是 from_unixtime  只要符合日期格式的数据形式他们都能够互相转换的,格式有’YYYYMMDD‘,’YYYY/MM/DD‘,’yyyy-MM-dd‘,’yyyy-MM-dd HH:mm:ss'......十分强大

ps:Unix时间戳(Unix timestamp),或称Unix时间(Unix time)、POSIX时间(POSIX time), 是一种时间表示方式,定义为从格林威治时间1970年01月01日00时00分00秒起至现在的总秒数。


所以

正确思路:将原有的日期格式转换成时间戳,再从时间戳转换成你想要的格式。

‘YYYYMMDD’====》》》‘YYYY-MM-DD’

SELECT from_unixtime(unix_timestamp('20220922','YYYYMMDD'),'YYYY-MM-DD') ;

result

+----------+
|    c0    |
+----------+
|2022-09-22|
+----------+

总结:

  1. unix_timestamp : 转换成时间戳,他是可以将符合时间格式转换成按秒计数的函数。例如:'YYYY-MM-DD','YYYYMMDD','YYYY/MM/DD',以及后面的时分秒。

  2. from_unixtime : 时间戳转日期函数,就是将时间戳转成你想要的格式。


【Hive SQL】常用日期函数汇总

【Hive SQL】常用日期函数汇总icon-default.png?t=M85Bhttps://blog.csdn.net/u013631103/article/details/127081160?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22127081160%22%2C%22source%22%3A%22u013631103%22%7D

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值