0


Hive 日期处理函数汇总

Hive 日期处理函数汇总

最近项目处理日期操作比较繁杂,使用Hive的日期函数也较频繁,简单整理方便日后复习

1. 加减日期

  1. date_add(‘日期字符串’,int值) :把一个字符串日期格式加n天,n为int值> select date_add(‘2023-12-31’,7);结果:2024-01-07
  2. date_sub(‘日期字符串’,int值) :把一个字符串日期格式减n天,n为int值> select date_sub(‘2024-01-2’,7);结果:2023-12-26
  • 当然 date_add(‘xx’,-1) 等价于 date_sub(‘xx’,1)

2. 时间戳/格式化日期字符串互相转换,格式化日期

  1. from_unixtime(时间戳,‘pattern’) : 从 时间戳格式化日期字符串.'pattern’是日期格式化模式字符串> hive> select from_unixtime(1704788052,‘yyyy-MM-dd HH:dd:ss’);结果:2024-01-09 16:09:12- 时间戳转换为日期时间函数:mysql也是FROM_UNIXTIME,pg 则是 TO_TIMESTAMP
  2. unix_timestamp(‘日期字符串’,‘pattern’) :从格式化日期字符串时间戳 .> select unix_timestamp(‘2023/11/22’,‘yyyy/MM/dd’);结果:1700582400- 日期时间转换为时间戳:mysql也是unix_timestamp,pg 则是 SELECT EXTRACT(EPOCH FROM TIMESTAMP 'yyyy-mm-dd hh:mm:ss');
  3. date_format(‘日期字符串’,‘pattern’) : 把一个字符串日期格式化为指定的格式,日期字符串必须满足yyyy-MM-dd格式> hive> select date_format(‘2023-11-22’,‘yyyy-MM-dd HH:mm:ss’);结果:2023-11-22 00:00:00

3. 获取当前时间

  1. current_date() : 获取当前的日期的字符串> hive>select current_date();结果:2024-01-09
  2. current_timestamp() : 获取当前时间字符串,格式为 ‘yyyy-MM-dd HH:mm:ss.SS’> hive> select current_date();结果:2024-01-09 16:12:03.339
  3. unix_timestamp(): 获取当前时间戳注:unix_timestamp(void) is deprecated. Use current_timestamp instead.> hive> select unix_timestamp();结果:1704788052

10.实战

给定一个表的一列dt_plantdate,该列为

'yyyy-MM-dd HH:mm:ss'

格式的日期字符串
(示例:

'2024-01-09 16:12:03'

)
,将该列减14天,结果仍需要保证为

'yyyy-MM-dd HH:mm:ss'

格式

思路:由于date_sub处理粒度只到yyyy-MM-dd 即最小为天,date_sub()会导致 小时分钟丢失
所以我们不使用date_sub()相减!!

而是先

统一转为时间戳

后相减(时间戳可以直接数值相减),
处理完再转为字符串

SELECT
    from_unixtime(
        unix_timestamp(dt_plantdate,'yyyy-MM-dd HH:mm:ss')-14*24*60*60,'yyyy-MM-dd HH:mm:ss')AS modified_date
FROM
    your_table;

我们先直接时间戳数值相减,之后利用from_unixtime 转为标准格式字符串


本文转载自: https://blog.csdn.net/qq_44831907/article/details/135484852
版权归原作者 mizuhokaga 所有, 如有侵权,请联系我们删除。

“Hive 日期处理函数汇总”的评论:

还没有评论