在这里我们介绍下cdh的Impala相关的sql函数,具体如下:
1)获取当前时间
timestamp 样式2021-12-10 04:36:48.147046000
bigint 样式 1639110956
| 函数/方法 | 输出类型 | 说明/样式 |
|---|---|---|
| current_timestamp() | timestamp | 所在时区的当前时间 |
| now() | timestamp | 所在时区的当前时间 |
| unix_timestamp() | bigint | 所在时区的当前时间戳 |
| utc_timestamp | timestamp | UTC时区的当前时间 |
| timeofday() | string | Fri Dec 10 12:39:46 2021 CST |
2)获取时间指定单位函数
| 序号 | 函数/方法 | 输出类型 | 说明/样式 |
|---|---|---|---|
| 1 | year(timestamp/date) | int | 获取年 yyyy |
| 2 | quarter(timestamp/date) | int | 获取季度(1,2,3,4) |
| 3 | month(timestamp/date) | int | 获取月 |
| 4 | monthname(timestamp/date) | string | 获取月份名称 December |
| 5 | week(timestamp/date) | int | 获取周(1-53) |
| 6 | weekofyear(timestamp/date) | int | 获取周(1-53) |
| 7 | dayofweek(timestamp/date) | int | 获取天(本周第多少天,周日算第一天) |
| 8 | dayname(timestamp/date) | string | 获取天(星期几)Friday |
| 9 | next_day(timestamp/date, 10 | day(string)) | timestamp/date |
| 11 | day(timestamp/date) | int | 获取天(本月第多少天) |
| 12 | dayofmonth(timestamp/date) | int | 获取天(本月第多少天) |
| 13 | last_day(timestamp/date) | timestamp/date | 获取天(本月的最后一天日期) |
| 14 | dayofyear(timestamp/date) | int | 获取天(本年第多少天) |
| 15 | hour(timestamp/date) | int | 获取小时 |
| 16 | minute(timestamp date) | int | 获取分钟 |
| 17 | second(timestamp date) | int | 获取秒 |
| 18 | millisecond(timestamp date) | int | 获取毫秒 |
| 19 | extract (YEAR FROM timestamp) | bigint | 获取参数指定的时间单位 YEAR MONTH DAY HOUR MINUTE SECOND |
| 20 | date_part('year',timestamp) | bigint | 获取参数指定的时间单位 YEAR MONTH DAY HOUR MINUTE SECOND |
| 21 | trunc(timestamp/date,unit) | timestamp/date | 获取截断为指定单位的时间 |
| unit | 截取说明 |
|---|---|
| SYYYY,YYYY,YEAR,SYEAR,YYY,YY,Y | 年 |
| Q | 季节 |
| MONTH,MON,MM,RM | 月 |
| WW | 最近的日期是与一年中的第一天相同的日期 |
| W | 最近的日期是与该月的第一天相同的星期几 |
| DDD,DD,J | 天 |
| DAY,DY,D | 星期几(星期一)的开始 |
| HH,HH12,HH24 | 小时 |
| MI | 分钟 |
3)时间比较函数
| 序号 | 函数/方法 | 输出类型 | 说明/样式 |
|---|---|---|---|
| 1 | datediff(timestamp enddate,startdate) | int | 返回endDate比startDate多多少天 |
| 2 | int_months_between(timestamp t1,t2) | int | 返回两个日期相差的整数月份个数 |
| 3 | months_between(timestamp t1,t2) | double | 返回浮点数的月数相差的数 |
| 4 | date_cmp(DATE date1, DATE date2) | int | 比较是否相等,返回-1,0,1,null四种数值 |
| 5 | timestamp_cmp(timestamp t1,timestamp t2) | int | 比较是否相等,返回-1,0,1,null四种数值 |
4)时间格式转换函数
| 序号 | 函数/方法 | 输出类型 | 说明/样式 |
|---|---|---|---|
| 1 | to_date(timestamp date) | string | 返回时间戳对应的date |
| 2 | to_timestamp(bigint unixtime) | timestamp | 返回整数对应的timestamp值 |
| 3 | to_timestamp(string date,string pattern) | timestamp | 返回字符串对应的timestamp值 |
| 4 | to_utc_timestamp(timestamp t,string timezone) | timestamp | 指定时区的时间戳转化为UTC时区的时间戳 |
| 5 | from_timestamp(timestamp t,string pattern) | string | 把timestamp按照pattern进行格式化 |
| 6 | from_timestamp(string date,string pattern) | string | 把date按照pattern进行格式化 |
| 7 | from_unixtime(bigint unixtime) | string | 把时间戳秒数转化为本地地区中的字符串 |
| 8 | from_unixtime(bigint unixtime,string pattern) | string | 时间戳转化为本地时区字符串,pattern格式 |
| 9 | from_utc_timestamp(timestamp t,string timezone) | timestamp | UTC时区指定时间戳转化为指定时区时间戳 |
| 10 | unix_timestamp(string datetime) | bigint | 把string类型的date或日期转化成时间戳Unix |
| 11 | unix_timestamp(timestamp datetime) | bigint | 把string类型的timestamp转化成时间戳Unix |
| 12 | unix_timestamp(string datetime,string pattern) | bigint | 日期按pattern转化成时间戳Unix |
5)时间计算函数
| 序号 | 函数/方法 | 输出类型 | 说明/样式 |
|---|---|---|---|
| 1 | years_add(timestamp/date date, int/bigint years) | timestamp/date | 增加指定年数 |
| 2 | years_sub(timestamp/date date, int/bigint years) | timestamp/date | 减少指定年数 |
| 3 | months_add(timestamp/date date, int/bigint months) | timestamp/date | 增加指定月数 |
| 4 | months_sub(timestamp/date date, int/bigint months) | timestamp/date | 减少指定月数 |
| 5 | add_months(timestamp/date date, int/bigint months) | timestamp/date | 增加指定月数 |
| 6 | weeks_add(timestamp/date date, int/bigint weeks) | timestamp/date | 增加指定周数 |
| 7 | weeks_sub(timestamp/date date, int/bigint weeks) | timestamp/date | 减少指定周数 |
| 8 | days_add(timestamp/date startdate, int/bigint days) | timestamp/date | 增加指定天数 |
| 9 | days_sub(timestamp/date startdate, int/bigint days) | timestamp/date | 减少指定天数 |
| 10 | date_add(timestamp/date startdate, int/bigint days) | timestamp/date | 增加指定天数 |
| 11 | date_sub(timestamp/date startdate, int/bigint days) | timestamp/date | 减少指定天数 |
| 12 | adddate(timestamp/date startdate, int/int days) | timestamp/date | 增加指定天数 |
| 13 | subdate(timestamp/date startdate,bigint/int days) | timestamp/date | 减少指定天数 |
| 14 | hours_add(timestamp date, int/bigint hours) | timestamp | 增加指定小时 |
| 15 | hours_sub(timestamp date, int/bigint hours) | timestamp | 减少指定小时 |
| 16 | minutes_add(timestamp date, int/bigint minutes) | timestamp | 增加指定分钟 |
| 17 | minutes_sub(timestamp date, int/bigint minutes) | timestamp | 减少指定分钟 |
| 18 | seconds_add(timestamp date, int/bigint seconds) | timestamp | 增加指定秒数 |
| 19 | seconds_sub(timestamp date, int/bigint seconds) | timestamp | 减少指定秒数 |
| 20 | milliseconds_add(timestamp t, int/bigint s) | timestamp | 增加指定毫秒数 |
| 21 | milliseconds_sub(timestamp t, int/bigint s) | timestamp | 减少指定毫秒数 |
| 22 | microseconds_add(timestamp t, int/bigint s) | timestamp | 增加指定微秒数 |
| 23 | microseconds_sub(timestamp t, int/bigint s) | timestamp | 减少指定微秒数 |
| 24 | nanoseconds_add(timestamp t, int/bigint s) | timestamp | 增加指定纳秒数 |
| 25 | nanoseconds_sub(timestamp t, int/bigint s) | timestamp | 减少指定纳秒数 |
| 26 | date_add(timestamp/date startdate, interval_expression) | timestamp/date | 使用参数计算日期增量值(增加) |
| 27 | date_sub(timestamp/date startdate, interval_expression) | timestamp/date | 使用参数计算日期增量值(减少) |

还没有评论,来说两句吧...