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,秒
参考文章
发表评论