Hive常见时间日期函数的使用与问题整理

这篇具有很好参考价值的文章主要介绍了Hive常见时间日期函数的使用与问题整理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

这里整理一下Hive常见的时间函数和日期函数和用法,作为平时数据处理过程的一个检索和记录。

平时在数据处理过程中,如果不经常使用时间函数,一时间遇到一些时间上的处理,难免会想不起来。

hive本身提供的时间函数已经很丰富了,基本上能满足我们所有的需求,一些特殊需求也可以通过增加一些数学逻辑实现出来。

接下来看一下类别的日期和时间函数的使用方式。

1.时间戳和日期相互转换函数

具体执行结果在后面备注标注出来。主要为时间戳转换为日期函数,和将日期转换为时间戳函数

-- 1.时间戳转化为日期函数
-- from_unixtime(bigint unixtime[, string format]) 其中第一个参数必须为bigint类型
select from_unixtime(1661084482)		-- 2022-08-21 20:21:22  
select from_unixtime(1661084482, 'yyyy-MM-dd')  -- 2022-08-21  
select from_unixtime(1661084482, 'yyyyMMdd') 	-- 20220821
select from_unixtime(1661084482,'yyyy-MM-dd HH:mm:ss')		-- 2022-08-21 20:21:22  

-- 2.将日期转换为时间戳
select unix_timestamp('2022-08-21 20:21:22')		-- 1661084482  
select unix_timestamp('20220821','yyyyMMdd')	-- 1661011200
select unix_timestamp('2022-08-21', 'yyyy-MM-dd')	-- 1661011200

2.获取当前天的相关函数

获取当天时间的三种方式,注意格式,其中current_timestamp返回的时间为UTC时间。

-- 返回当天三种方式,格式有一定的不同
select current_date 	-- 2023-06-14
select current_timestamp 	-- 返回时分秒 2023-06-14 07:56:14.28
select from_unixtime(unix_timestamp()) 		-- 2023-06-14 15:56:14

3.日期格式化函数

日期格式化函数,需要什么格式,后面写什么格式的日期字符串描述,to_date仅有一种格式返回结果

-- 需要什么格式,后面写什么格式的日期字符串描述
select date_format('2022-08-21 20:21:22', 'yyyy-MM-dd')	-- 2022-08-21  
select date_format('2022-08-21 20:21:22', 'yyyyMMdd')		-- 20220821
select date_format('2022-08-21', 'yyyy-MM-dd HH:mm:ss') -- 2022-08-21 00:00:00

-- 获取时间日期的日期部分
select to_date('2022-08-21 20:21:22')		-- 2022-08-21

4.获取年、月、日、天、小时、分钟、秒、周数、星期几、季节函数

hive提供了灵活获取年、月、日、天、小时、分钟、秒、周数、星期几、季节的函数,最后面还提供了一个通过数学函数转换获取季度的逻辑,可以看出其实部分函数如果版本不支持,我们可以通过其他方式曲线获取。当然,不提倡,可读性差。

-- 获取年
select year('2022-08-21 20:21:22')		-- 2022
-- 获取月
select month('2022-08-21 20:21:22')		-- 8
-- 获取当前天
select day('2022-08-21 20:21:22')			-- 21
-- 每月第几天,同day()
select dayofmonth('2022-08-21 20:21:22')		-- 21
-- 获取当前小时
select hour('2022-08-21 20:21:22')			-- 20
-- 获取当前分钟
select minute('2022-08-21 20:21:22')		-- 21
-- 获取当前秒
select second('2022-08-21 20:21:22') 		-- 22
-- 活跃当前日期是本年第几周
select weekofyear('2022-08-21 20:21:22')		-- 31
-- 获取当前天是本周第几天,计算日历是从星期天为本周第一天开始计算。如果想要计算星期1为第一天,可以在当前天加1天再去计算。
select dayofweek('2022-08-21 20:21:22')		-- 1
-- 获取当前日期是第几季度
select quarter('2022-08-21 20:21:22')		-- 3

-- 如果有hive因版本不支持部分函数,可以通过数学转换计算,例如当前是第几季度。
select ceil(month('2022-08-21 20:21:22')/3)	-- 季节 3 数学转换

5.日期和月份的加减相关函数

获取日期和月份的加减操作,灵活处理日期和月份增加减少,日期月份之间互相求差值。

-- 日期增加日
select date_add('2022-08-21',10) -- 增加日	2022-08-31
-- 日期减少日
select date_sub('2022-08-21',10) -- 减少日	 2022-08-11
-- 月增加
select add_months('2022-08-21',2) -- 增加月 	2022-10-21
-- 月减少
select add_months('2022-08-21',-1) -- 减少月	2022-07-21

-- 两个日期相减函数
select datediff('2022-08-23', '2022-08-21')	-- 2
-- 两个月份相减
select months_between('2022-08-21', '2022-07-25')	-- 0.871

6.获取一些指定特殊日期的函数

主要是获取指定日期的月初(月末)、年初(年末)日期和获取指定日期的下个星期几的日期

-- 获取指定日期的月初(月末)、年初(年末)日期
select last_day('2023-06-13')  -- 月末	2023-06-30
select trunc('2023-06-13', 'MM')  -- 月初	2023-06-01
select trunc('2023-06-13', 'YY')  -- 年初	2023-01-01
select date_sub(add_months(trunc('2023-06-13', 'YY'),12),1) -- 年末	2023-12-31

-- 获取指定日期的下个星期几的日期
select next_day('2023-06-13', 'MO')    -- 2023-06-19
select next_day('2023-06-13', 'TU')    -- 2023-06-20
select next_day('2023-06-13', 'WE')    -- 2023-06-14
select next_day('2023-06-13', 'TH')    -- 2023-06-15
select next_day('2023-06-13', 'FR')    -- 2023-06-16
select next_day('2023-06-13', 'SA')    -- 2023-06-17
select next_day('2023-06-13', 'SU')    -- 2023-06-18

7.时区转换函数操作

时区转换函数有很多需要注意的点,其也可以联合使用,简单说一下时区,UTC是世界标准时间。

东一区 GMT+1,东八区GMT+8以此类推,西一区GMT-1,西七区GMT-7以此类推。

时间戳没有时区属性,同一时刻时间戳一致。

-- 将utc时间转换为东八区时间。输入为utc时间字符串,结果为东八区时间字符串
select from_utc_timestamp('2023-06-14 15:56:14','GMT+8')		-- 2023-06-14 23:56:14

-- 将utc时间戳转换为东八区时间,输入为utc时间戳,结果为东八区时间字符串,时间戳没有时区属性,同一时刻时间戳一致
select from_utc_timestamp(cast(1686729374000 as bigint),'GMT+8')		-- 2023-06-14 15:56:14
-- 将指定时区时间转换成utc时间
select to_utc_timestamp('2023-06-14 15:56:14','GMT+8')		-- 2023-06-14 07:56:14
-- 将指定时区时间的时间戳转换成utc时间(这种使用方式不常见,是错误的,只是在某些时刻进行数据转换用,不建议使用)
select to_utc_timestamp(cast(1686729374000 as bigint),'GMT+8')	-- 2023-06-13 23:56:14
-- 正确的转换时间戳为utc时间的方式
select to_utc_timestamp(cast(1686729374000 as bigint),'UTC')

以上内容为日期时间函数的常见使用方法及注意事项,有需要可以收藏。

一些函数可以搭配使用,满足生产环境中的时间需求。

下一期:HiveSQL在使用聚合类函数的时候性能分析和解读

按例,欢迎点击此处关注我的个人公众号,交流更多知识。

后台回复关键字 hive,随机赠送一本鲁边备注版珍藏大数据书籍。文章来源地址https://www.toymoban.com/news/detail-482424.html

到了这里,关于Hive常见时间日期函数的使用与问题整理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Hive时间日期函数一文详解+代码实例

    目录 前言 一、HiveSQL运行过程 二、Hive时间函数 1.获取当前时间 1.current_date() 2. current_timestamp() 3. unix_timestamp() 2.获取指定时间维度 1. year() 2.quarter() 3.month() 4.day() 5.hour() 6.minute() 7.second 8.weekofyear() 9. dayofweek()  10.last_day()  11.next_day() 12.trunc()  3.时间格式转换  1.to_date() 2. from_un

    2024年02月02日
    浏览(35)
  • 【hive】时间相关函数的使用(时间戳函数unix_timestamp()/from_unixtime()、日期处理函数datediff()/date_sub()/date_add()等)

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 unix_timestamp() 无参数调用,获取当前系统时间戳为10位的bigint类型数值,该数值只精确到秒。 unix_timestamp(string timestamp) 输入格式默认为“yyyy-MM-dd HH:mm:ss”,如不符合则返回null。 unix_timestamp(string date,str

    2024年02月08日
    浏览(29)
  • mysql常见时间函数, 获取日期对应的年、月、日、星期、周、季度、时、分、秒函数、加减、日期都有

     获取日期对应的年、月、日、星期、季度、时、分、秒函数、日期为当年的第几天函数都有 1、NOW(),用于获取当前日期和时间函数 select now()  返回:2023-05-18 10:58:06 2、CURDATE(),用于获取当前日期,同CURRENT_DATE() select curdate()  返回:2023-05-18 3、CURTIME(),用于获取当前时间,

    2024年02月15日
    浏览(41)
  • MySQL(七)-日期和时间函数的使用解析

    日期和时间函数主要用来处理日期和时间值,一般的日期函数除了使用 DATE 类型的参数外也可以使用 DATETIME 或者 TIMESTAMP 类型的参数,但会忽略这些值的时间部分。相同的,以TIME 类型值为参数的函数,可以接受 TIMESTAMP 类型的参数,但会忽略日期部分,许多日期函数可以同时

    2024年02月01日
    浏览(34)
  • Hive学习(12)Hive常用日期函数

    1、hive返回当天三种方式 2、from_unixtime:转化unix时间戳到当前时区的时间格式 3、unix_timestamp:获取当前unix时间戳 4、year:返回日期中的年 5、month:返回日期中的月份 6、day:返回日期中的天 7、hour:返回日期中的小时 8、minute:返回日期中的分钟 9、second:返回日期中的秒

    2024年02月11日
    浏览(29)
  • Hive使用中常见的问题及解决方法

            Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提供SQL查询功能。在工作中大部分场景都会用到,下面列出几个 hive 使用中常见的问题及解决方法。 1)Hive 默认的输入格式处理是CombineHiveInputFormat,会对小文件进行合并 hive (default

    2024年02月10日
    浏览(35)
  • Hive日期函数详细讲解

    Hive 提供了一系列的内建日期函数,用于处理日期和时间数据。以下是您提到的日期函数的详细讲解,包括案例和使用注意事项: FROM_UNIXTIME() 功能 :将 Unix 时间戳(秒为单位)转换为日期时间格式。 语法 : FROM_UNIXTIME(unix_timestamp[, format]) 案例 : SELECT FROM_UNIXTIME(1609459200);  

    2024年01月20日
    浏览(80)
  • Hive常用的日期函数

    注意: current_timestamp() 获取的时UTC默认时区。 给定一个时间戳可基于 from_utc_timestamp/to_utc_timestamp 进行转换。 注意: nbsp;nbsp; 如果当前年的第一个周,天数超过3天,那就是当前年的第一周; nbsp;nbsp; 如果当前年的第一个周,天数小于等于3天,那就是上一年的最后一周。 wee

    2024年02月07日
    浏览(33)
  • Java:日期毫秒值和常见日期时间格式相互转换

    本文介绍了Java中,日期毫秒值和常见日期格式相互转换。 提示:以下是本篇文章正文内容,下面案例可供参考 代码示例: 代码示例: 如果想将指定时间转换为毫秒值,相对比较麻烦,这里提供两种方法供参考 利用Calendar.set() 利用DateFormat.parse() 本文介绍了Java中如何将毫秒

    2024年02月16日
    浏览(29)
  • spark SQL 怎么将一个时间戳字符串转换成hive支持的时间日期类型?

    在 Spark SQL 中,可以使用 to_timestamp 函数将一个时间戳字符串转换成 Hive 支持的时间日期类型。这个函数的语法如下: 其中,timestampStr 表示要转换的时间戳字符串,format 表示时间戳字符串的格式,格式必须与时间戳字符串的实际格式相匹配。如果不指定格式,Spark 会使用默认

    2024年02月11日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包