Hive SQL日期时间转换与处理函数详解

创始人
2025-01-09 11:18:23
0 次浏览
0 评论

hive6:字符串和日期的转换常用函数

使用了两个函数,from_unixtime和unix_timestamp:from_unixtime:日期时间戳使用函数:from_unixtime(h3intunixtime[,stringformat])返回值:stringsubstr(from_unixtime(unix_timestamp()),1,10)结果是:2017-01-03selectfrom_unixtime(unix_timestamp('20180905','yyyymmdd'),'yyyy-mm-dd')fromdw.ceshi_data结果如下:2018-09-052018-09-05转换为20180905selectfrom_unixtime(aix_timestamp('2018-09-05','yyyy-mm-dd'),'yyyymmdd')fromdw.ceshi_data结果如下:20180905用法:unix_timestamp(stringdate)注意:格式必须为yyyy-MM-ddHH:mm:ss,否则返回空值。
返回值:h3intfromdw.ceshi_data;结果如下:1536120063获取当前日期的时间戳:selectunix_timestamp()fromdw.ceshi_data;结果如下:1536126324hive表存储的是无法直接识别的字符串格式的时间,如'20170728102031',需要两次计算。
时间不同的秒数。
1、首先将字符串调整为hive可识别的格式,即将“20170728102031”形式转换为“2017-07-2810:20:31”。
由于hive的regexp_replace不支持子语句,所以无法一次性转换。
我们只能使用通用的substr和拼接函数来写selectconcat(substr('20170728102031',1,4),'-',substr('20170728102031).',5,2),'-',substr('20170728102031',7,2),'',substr('20170728102031',9,2),':',substr('20170728102031',11,2),':',substr('20170728102031',13,2))selectunix_timestamp(concat(substr('20170728102031',1,4),'-',substr('20170728102031',5,2),'-',substr('20170728102031',7,2),'',substr('20170728102031',9,2),':',substr('20170728102031',11,2),':',substr('20170728102031',13,2)))-unix_timestamp(concat(substr('20170728112031',1,4),'-',substr('20170728112031',5,2),'-',substr('20170728112031',7,2),'',substr('20170728112031',9,2),':',substr('20170728112031',11,2),':',substr('20170728112031',13,2)))你好>selectcreate_time,datediff(from_unixtime(unix_timestamp(),'yyyy-MM-ddHH:mm:ss'),create_time)fromtest结果:当前时间在2017-11-16和create_time11-10之间;相差6天,产量为6;hive>selectdatediff('2012-12-08','2012-05-09')fromdual;213日期时间日期函数:to_date语法:to_date(stringtimestamp)返回:stringhive>selectto_date('2011-12-0810:03:01′)fromdual;2011-12-082011下面可以用来获取月份、时间、分、秒用法同上日期轮转函数:weekofyear(stringdate)返回值:int描述:返回本周的日期。
hive>selectweekofyear('2011-12-0810:03:01′)fromdual;49添加日期函数:date_add语法:date_add(stringstartdate,intdays)返回值:string描述:返回几天前添加startdate后的日期示例:hive>selectdate_add('2012-12-08′,10)fromdual;2012-12-18日期缩减函数:date_sub语法:date_sub(stringstartdate,intdays)返回值:string描述:返回缩减后的开始日期天数几天之内。
示例:hive>selectdate_sub('2012-12-08′,10)fromdual;2012-11-28然后我们使用hour和datediff获取create_time与当前时间之间的时差:hive>selectcreate_time,(hour(from_unixtime(一个ix_timestamp(),'yyyy-MM-ddHH:mm:ss'))-ora(create_time)+(datediff(from_unixtime(unix_timestamp(),'yyyy-MM-ddHH:mm:ss'),create_time))*24)ahour_dValue

hive中日期格式转换

Hive中的日期格式转换和时间格式转换to_date()

使用to_date函数从时间数据中提取日期部分。
例如,如果您有一个包含日期和时间的字段,请使用to_date函数获取该字段的日期部分。
例如:to_date('2022-08-08T12:34:56')结果是:2022-08-08。

from_unixtime()

从unix时间戳转换为日期格式。
例如,有一个unix时间戳字段,可以使用from_unixtime函数将其转换为标准日期格式,例如:from_unixtime(1659938033)结果为:2022-08-08。

date_format()

date_format函数用于格式化日期、时间戳和字符串类型以打印标准时间格式。
例如,将日期和时间字符串转换为yyyy-MM-dd格式:date_format('2022-08-08T12:34:56','yyyy-MM-dd')结果为:2022-08-08。

unix_timestamp()

获取当前时间的unix时间戳。
使用:unix_timestamp()结果是:1659938033。
或者将日期转换为unix时间戳:unix_timestamp('2022-08-08')结果也是:1659938033。

from_utc_timestamp/to_utc_timestamp()

这些函数用于UTC时间转换。
例如,将UTC时间转换为本地时间:from_utc_timestamp('2022-08-08T12:34:56Z')结果为:2022-08-08T12:34:56。
相反,将本地时间转换为UTC时间:to_utc_timestamp('2022-08-08T12:34:56'结果为:2022-08-08T12:34:56Z)。

to_unix_timestamp()

将日期转换为unix时间戳。
例如:to_unix_timestamp('2022-08-08')结果为:1659938033。

以上函数用于Hive中的日期格式转换。
具体用途必须根据具体情况进行选择和应用。
此信息来自相关博客,仅供学习之用。

HIVESQL时间戳日期互转/日期处理函数/一些日期加工技巧

在HiveSQL中,时间的指示和转换是分析中注意到的主要操作。
让我们更深入地了解如何在这两种类型的数据之间进行转换,以及现代流程的一些技巧。
首先,从Unix时间戳转换为现代格式。
使用ab_unixtime函数,只需传递具有所需参数的日期格式的字段指示。
例如:from_unixtime(1234567899,'yyyy/MM/ddHH:mm:ss')将以指定格式显示日期。
请注意,如果时间指示有13位(通常以毫秒为单位),则必须先将其除以1000,并将结果转换为整数,以避免数据类型不匹配问题。
例如,强制转换(1234567899999/1000ash3int)。
要将日期格式转换为Unix时间戳,可以使用unix_timestamp函数。
只需传入日期字段和相应的日期格式字符串作为参数即可。
例如,unix_timestamp('2021/10/1010:10:10','yyyy/MM/ddHH:mm:ss')。
默认格式为“yyyy-MM-ddHH:mm:ss”。
如果给定格式与默认格式不同,请明确说明。
当比较日期、时间、年、月、周、日、时、分、秒等特定元素时,可以使用内置函数。
例如,ad_date('2021-10-1010:10:10')将字符串转换为现代格式。
要进一步提取数据,可以使用年(、月()、星期()、日()等函数。
同样,小时()、分钟()和秒()获取以小时为单位的时间您可以分别使用date_add和date_sub函数来调整日期。
这些函数允许将日期增加或减少一定的天数。
例如:date_add(currentdate,N)或date_sub(current)日期N)。
datumiff函数在计算两个日期时间2)))*24)之间的时间差时非常有用。
当处理特殊的数据格式时,例如“年-周”,他意识到排序问题可能会导致意想不到的结果。
您可以使用IF和CONCAT函数添加前导数字以确保类型正确。
例如,IF(FACT(DATE)AVAILABLE)<10>这些就是数据分析最强大的工具HiveSQL中进行时间和时间转换的基本技术和功能。
随着实践的深入,你会发现更有趣、更实用的处理时代的方法。
热门文章
1
JSF架构解析与Java学习资源分享:J... JavaServerFacesJSF体系结构JavaServerFaces(JS...

2
数据结构C语言版深度解析与C语言入门很简... 《数据结构(C语言版)》.严蔚敏吴伟民著.pdf在《数据结构(C语言版)》一书中...

3
C语言字符串常量解析:区别、用途及存储方... 什么是字符串常量字符串常量是C语言中的一种数据类型,它是由一对双引号括起来的字符...

4
C语言printf函数:格式字符串与输出... printf函数中的格式与输出项有什么关系?在C语言中,printf函数中的格式...

5
Excel技巧:计算字符串起始位置与合并... 如何计算字符串在特定文本中的起始位置,怎么计算字符串在特定文本中的起始位置您可以...

6
Python发音全解:掌握正确的发音方法... python怎么读我的很多学习编程的朋友可能都知道Python这个词,但是他们中...

7
字符与字符串:编程中的基础文本类型解析 字符串什么意思字符串是由数字、字母和下划线组成的字符串,表示为s=“a1a2…a...

8
Python编程语言:多领域应用与开发优... Python的作用是什么?Python是一种跨平台计算机编程语言,是ABC语言的...

9
深度解析:C语言编程特点与应用领域 什么叫c语言C语言是一种编程语言。C编程语言应用广泛,具有以下特点和特点:1.语...

10
Java全解析:跨平台编程语言的魅力与多... java是什么Java是一种功能强大的编程语言,被称为“一次编写,随处运行”模型...