【hive常用函数一】日期函数

栏目: 服务器 · 发布时间: 7年前

使用hive进行数据处理的过程种,遇到不少问题,总结之前的一些开发经验,把之前的一些处理技巧mark一下:

使用通用的哑表dual作为测试表用。

1、时间戳转换

日期格式转换时间戳只能精确到秒(即长度只有10位,而不是13位)

unix_timestamp(date,dateformat)

unix_timestamp()不入参,函数可以直接获取当前的时间戳

select unix_timestamp() as time_stamp,unix_timestamp('2018-09-26 9:13:26','yyyy-MM-ddHH:mm:ss') as time_stamp1 from dual;

time_stamp      time_stamp1

1538054001      1537924406

时间戳转换成日期格式,必须长度为10

from_unixtime(timestamp,dateformat)

select from_unixtime(unix_timestamp(),'yyyy-MM-dd HH:mm:ss') asdate_time,from_unixtime(1537924406,'yyyy-MM-dd') as date_time1 from dual;

date_time       date_time1

2018-09-27 21:16:13     2018-09-26

如果是毫秒级别时间戳13位,可以这么转换cast(timestamp/1000 as bigint)

2、日期格式化

把字符串或者日期转成指定格式的日期

date_format(string/date,dateformate) 

select date_format('2018-09-12','yyyy-MM-dd HH:mm:ss') as date_time,date_format('2018-09-12','yyyyMMdd') as date_time1 from dual;

date_time       date_time1

2018-09-12 00:00:00     20180912

还有一个to_date(date)函数 返回 yyyy-MM-dd日期格式

3、日期加减/月份加减(位移)

对日期进行加减法,date_add函数参数n是正数往后推n天,如果是负数往前推n天,date_sub函数相反

对月份进行加减,add_months 函数参数m是正数往后推m个月,如果是负数往前推m个月

date_add(date,n)

date_sub(date,n)

select date_add('2018-09-27',2) as date1,date_add('2018-09-27',-2) as date2 from dual;

date1   date2

2018-09-29      2018-09-25



add_months(date,m)

select add_months('2018-09-27',1) as month1,add_months('2018-09-27',-1) as month2 from dual;

month1  month2

2018-10-27      2018-08-27

4、日期差/月份差

日期差计算两个日期之间相差多少天,前面的日期减去后面的日期

月份差计算前面的日期减去后面的日期计算月份差,这个结果是按照天数占月分的比值计算得到的,是一个小数,可以自己取整

datediff(date,date1)

select datediff('2018-09-22','2018-08-02') as day_diff,datediff('2018-08-02','2018-09-22') as day_diff1 from dual;

day_diff        day_diff1

51      -51

months_between(date,date1)

select months_between('2018-09-22','2018-08-02') as mon_diff,round(months_between('2018-09-22','2018-08-02')) as mon_diff1 from dual;

mon_diff        mon_diff1

1.64516129      2.0

5、获取月末、月初、年初、当前日期下个星期X的日期

获取月末最后一天

last_day(date)

select last_day('2018-09-30') as date_time,last_day('2018-09-27 21:16:13') as date_time1 from dual;

date_time       date_time1

2018-09-30      2018-09-30

获取月初、年初

trunc(date,format)  format:MONTH/MON/MM, YEAR/YYYY/YY

select trunc('2018-09-27','YY') as date_time,trunc('2018-09-27 21:16:13','MM') as date_time1 from dual;

date_time       date_time1

2018-01-01      2018-09-01

当前日期下个星期X的日期

next_day(date,formate) format:英文星期几的缩写或者全拼

select next_day('2018-09-27','TH') as date_time,next_day('2018-09-27 21:16:13','TU') as date_time1 from dual;

date_time       date_time1

2018-10-04      2018-10-02

目前常用的一些日期函数大概就是如此,还有一些简单的year()、month()、day()等等就不一一列了。

本文由brucelu 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。

转载、引用前需联系作者,并署名作者且注明文章出处。

本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

The Web Designer's Idea Book

The Web Designer's Idea Book

Patrick Mcneil / How / 2008-10-6 / USD 25.00

The Web Designer's Idea Book includes more than 700 websites arranged thematically, so you can find inspiration for layout, color, style and more. Author Patrick McNeil has cataloged more than 5,000 s......一起来看看 《The Web Designer's Idea Book》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具