hive时间函数

1、add_months(DATE|STRING|TIMESTAMP start_date, INT num_months)

作用:返回当前时间下再增加num_months个月的日期

返回类型:string

SELECT add_months('2022-03-09', -5); -- 2021-10-09

SELECT add_months('2022-03-09', 5); -- 2022-08-09

2、current_date

作用:返回当前时间日期

返回类型:date

SELECT current_date(); -- 2022-03-09

3、current_timestamp()

作用:返回当前时间戳

返回类型:timestamp

SELECT current_timestamp(); -- 2022-03-09 15:51:44.853

4、datediff(STRING enddate, STRING startdate)

作用:返回结束日期减去开始日期的天数

返回类型:int

SELECT datediff('2022-03-09', '2022-02-28'); -- 9

SELECT datediff('2022-03-09', '2022-03-28'); -- -19

5、date_add(DATE startdate, INT days)

作用:返回开始日期startdate增加days天后的日期

返回类型:string

SELECT date_add('2022-03-09', 8); -- 2022-03-17

SELECT date_add('2022-03-09', -8); -- 2022-03-01

6、date_format(DATE|TIMESTAMP|STRING ts, STRING fmt)

作用:按指定格式返回字符串

返回类型:string

SELECT date_format(current_date(), 'yyyy-MM'); -- 2022-03

SELECT date_format(current_timestamp(), 'yyyy-MM-dd'); -- 2022-03-09

SELECT date_format('2022-03-09 16:11:58.889', 'yyyy'); -- 2022

7、date_sub(DATE startdate, INT days)

作用:返回开始日期startdate减少days天后的日期

返回类型:string

SELECT date_sub('2022-03-09', -2); -- 2022-03-11

SELECT date_sub('2022-03-09', 2); -- 2022-03-07

8、day(STRING date)

作用:返回日期或时间戳字符串的日期部分

返回类型:int

SELECT day('2022-03-09 16:11:58.889'); -- 9

9、dayofmonth(STRING date)

作用:返回日期或时间戳字符串的日期部分

返回类型:int

SELECT dayofmonth('2022-03-09 16:11:58.889'); -- 9

10、from_unixtime(BIGINT unixtime [, STRING format])

作用:将Unix时间戳转换为字符串格式的时间(比如yyyy-MM-dd HH:mm:ss格式)

返回类型:string

SELECT from_unixtime(1646815444, 'yyyy-MM-dd'); -- 2022-03-09

11、from_utc_timestamp(T a, STRING timezone)

作用:转换为特定时区的时间

返回类型:timestamp

SELECT from_utc_timestamp('2022-03-09 15:21:34','PST'); -- 2022-03-09 07:21:34.0

SELECT from_utc_timestamp('2022-03-09 15:21:34','GMT'); -- 2022-03-09 15:21:34.0

SELECT from_utc_timestamp('2022-03-09 15:21:34','UTC'); -- 2022-03-09 15:21:34.0

SELECT from_utc_timestamp('2022-03-09 15:21:34','DST'); -- 2022-03-09 15:21:34.0

SELECT from_utc_timestamp('2022-03-09 15:21:34','CST'); -- 2022-03-09 09:21:34.0

12、hour(STRING date)

作用:返回一个时间的小时,可以用extract函数替代

返回类型:int

SELECT hour('2022-03-09 15:21:34'); -- 15

13、last_day(STRING date)

作用:返回给定时间或日期所在月的最后一天,参数可以是'yyyy-MM-dd HH:mm:ss' 或者 'yyyy-MM-dd'类型,时间部分会被忽略

返回类型:string

SELECT last_day('2022-03-09 15:21:34'); -- 2022-03-31

SELECT last_day('2022-03-09'); -- 2022-03-31

14、minute(STRING date)

作用:返回一个时间的分钟值,可以用extract函数替代

返回类型:int

SELECT minute('2022-03-09 15:21:34'); -- 21

15、month(STRING date)

作用:返回时间的月份,可以用extract函数替代

返回类型:int

SELECT month('2022-03-09 15:21:34'); -- 3

16、months_between(DATE|TIMESTAMP|STRING date1, DATE|TIMESTAMP|STRING date2)

作用:返回 date1 和 date2 的月份差。如果date1大于date2,返回正值,否则返回负值,如果是相减是整数月,则返回一个整数,否则会返回小数

返回类型:double

SELECT months_between('2022-03-09', '2022-02-28'); -- 0.38709677

SELECT months_between('2022-03-09', '2022-03-28'); -- -0.61290323

SELECT months_between('2022-03-09', '2022-03-09'); -- 0

SELECT months_between('2022-03-09', '2022-04-09'); -- -1

SELECT months_between('2022-03-09', '2022-02-09'); -- 1

17、next_day(STRING start_date, STRING day_of_week)

作用:获取指定日期后的第一个指定星期几。参数start_date可以是一个时间或日期,day_of_week表示星期几,比如Mo表示星期一,Tu表示星期二,Wed表示星期三,Thur表示星期四,Fri表示星期五,Sat表示星期六,Sun表示星期日。

返回类型:string

SELECT next_day('2022-03-09', 'Mon'); -- 返回当前日期的下一个周一日期:2022-03-14

SELECT next_day('2022-03-09', 'Tu'); -- 返回当前日期的下一个周二日期:2022-03-15

SELECT next_day('2022-03-09', 'Wed'); -- 返回当前日期的下一个周三日期:2022-03-16

SELECT next_day('2022-03-09', 'Th'); -- 2022-03-09为周三,指定参数为周四,所以返回当周的周四就是:2022-03-10

SELECT next_day('2022-03-09', 'Fri'); -- 返回当周周五日期:2022-03-11

SELECT next_day('2022-03-09', 'Sat'); -- 返回当周周六日期:2022-03-12

SELECT next_day('2022-03-09', 'Sun'); -- 返回当周周日日期:2022-03-13

18、quarter(DATE|TIMESTAMP|STRING a)

作用:返回给定时间或日期的季度,1至4个季度,可以用extract函数替代

返回类型:int

SELECT quarter('2022-03-09'); -- 1

19、second(STRING date)

作用:返回一个时间的秒,可以用extract函数替代

返回类型:int

SELECT second('2022-03-09 15:21:34'); -- 34

20、to_date(STRING timestamp)

作用:返回一个字符串时间的日期部分,去掉时间部分,2.1.0之前版本返回的是string,2.1.0版本及之后返回的是date

返回类型:date

SELECT to_date('2022-03-09 15:21:34'); -- 2022-03-09

SELECT to_date('2022-03-09'); -- 2022-03-09

21、to_utc_timestamp(T a, STRING timezone)

作用:转换为世界标准时间UTC的时间戳,与from_utc_timestamp类似

返回类型:timestamp

SELECT to_utc_timestamp('2022-03-09 15:21:34', 'GMT'); -- 2022-03-09 15:21:34.0

22、trunc(STRING date, STRING format)

作用:截断日期到指定的日期精度,仅支持月(MONTH/MON/MM)或者年(YEAR/YYYY/YY)

返回类型:string

SELECT trunc('2022-03-09 15:21:34', 'YY'); -- 2022-01-01

SELECT trunc('2022-03-09 15:21:34', 'MM'); -- 2022-03-01

23、unix_timestamp([STRING date [, STRING pattern]])

作用:参数时可选的,当参数为空时,返回当前Unix是时间戳,精确到秒。可以指定一个具体的日期,转换为Unix时间戳格式

返回类型:bigint

SELECT unix_timestamp('2022-03-09 15:21:34', 'yyyy-MM-dd hh:mm:ss'); -- 1646810494

24、weekofyear(STRING date)

作用:返回一个日期或时间在一年中的第几周,可以用extract替代

返回类型:int

SELECT weekofyear('2022-03-09 15:21:34'); -- 10

25、year(STRING date)

作用:返回时间的年份,可以用extract函数替代

返回类型:

SELECT year('2022-03-09 15:21:34'); -- 2022

26、extract(field FROM source)

作用:提取 day, dayofweek, hour, minute, month, quarter, second, week 或者year的值,field可以选择day, dayofweek, hour, minute, month, quarter, second, week 或者year,source必须是一个date、timestamp或者可以转为 date 、timestamp的字符串。注意:Hive 2.2.0版本之后支持该函数

返回类型:int

SELECT extract(year from '2022-03-09 15:21:34.467'); -- 2022,年

SELECT extract(quarter from '2022-03-09 15:21:34.467'); -- 1,季度

SELECT extract(month from '2022-03-09 15:21:34.467'); -- 3,月份

SELECT extract(week from '2022-03-09 15:21:34.467'); -- 10,一年中第几周

SELECT extract(dayofweek from '2022-03-09 15:21:34.467'); -- 4,星期几

SELECT extract(day from '2022-03-09 15:21:34.467'); -- 9,天

SELECT extract(hour from '2022-03-09 15:21:34.467'); -- 15,时

SELECT extract(minute from '2022-03-09 15:21:34.467'); -- 21,分

SELECT extract(second from '2022-03-09 15:21:34.467'); -- 34,秒

参考文章

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: