impala时间函数最全版(强烈建议收藏)
本文基于impala3.2版本,所有的内置时间函数;
文章目录
∙
oimpala时间函数最全版(强烈建议收藏)
o
▪
▪一、补充概念说明
▪
▪1、date类型和timestamp类型区别
▪2、时区
▪二、获取当前时间戳函数
▪三、时间计算函数
▪四、获取时间指定单位函数
▪五、时间比较函数
▪六、时间格式转换函数
一、补充概念说明
1、date类型和timestamp类型区别
对于一个完整的时间格式来说:2021-02-02 09:59:42.46,前半部分属于date,后半部分属于time;date类型的字段只支持前半部分
timestamp可用来表示完整格式的时间,时间存储:插入时间(当前时区)->UTC(世界标准时间)->输出时间(客户端当前时区)
2、时区
地球上不同的区域使用同一时间标准的定义;常见的世界标准时间(UTC),北京时间(UTC+8);
时区的表示,比如:Asia/Shanghai,America/New_York
3、本文中的使用示例都是 select (使用示例) from table 的形式,这里进行了简写;
二、获取当前时间戳函数
序号 | 语法类型/方法名称 | 输出类型 | 使用说明 |
1 | current_timestamp() | timestamp | 返回客户端所在时区的当前时间戳 |
2 | now() | timestamp | 返回客户端所在时区的当前时间戳 |
3 | unix_timestamp() | bigint | 返回客户端所在时区的当前时间戳的整数形式 |
4 | utc_timestamp() | timestamp | 返回客户端时间对应UTC时区的当前时间戳 |
5 | timeofday() | string | 根据本地系统的时间(包括任何时区指定)返回当前日期 和时间的字符串表示形式。 |
示例如下:执行时间北京时间:2021-02-04 08:46:27
--使用示例 | 对应输出 | 对应函数序号
current_timestamp() 2021-02-04 08:46:27 1
now() 2021-02-04 08:46:27 2
unix_timestamp() 1612399587 3
timeofday() Thu Feb 04 08:46:27 2021 CST 4
utc_timestamp() 2021-02-04 00:46:27 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 | 减少指定周数 |
unix时间戳转换日期格式 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 date, int/bigint milliseconds) | timestamp | 增加指定毫秒数 |
21 | milliseconds_sub(timestamp date, int/bigint milliseconds) | timestamp | 减少指定毫秒数 |
22 | microseconds_add(timestamp date, int/bigint microseconds) | timestamp | 增加指定微秒数 |
23 | microseconds_sub(timestamp date, int/bigint microseconds) | timestamp | 减少指定微秒数 |
24 | nanoseconds_add(timestamp date, int/bigint nanoseconds) | timestamp | 增加指定纳秒数 |
25 | nanoseconds_sub(timestamp date, int/bigint nanoseconds) | timestamp | 减少指定纳秒数 |
26 | date_add(timestamp/date startdate, interval_expression) | timestamp/date | 使用第二个参数计算日期增量值(增加) |
27 | date_sub(timestamp/date startdate, interval_expression) | timestamp/date | 使用第二个参数计算日期增量值(减少) |
补充说明: ①为了方便表达,下面参数都是用timestamp,执行时间北京时间:2021-02-04 08:46:27.707274000;
②年月周日这些函数都是可以用timestamp和date类型,输入是什么类型输出就是什么类型;(比如输入date,输出也是date)
③1秒=1000毫秒=1000000微妙=1000000000纳秒(分别是3,6,9次方)
④interval_expression的表述可用如下:YEAR[S],MONTH[S] ,WEEK[S] ,DAY[S], HOUR[S], MINUTE[S] ,SECOND[S] ,MILLISECOND[S] ,MICROSECOND[S], NANOSECOND[S] 【表述不区分大小写】
示例如下:
--使用示例 | 对应输出 | 对应函数序号
years_add(now(),1) 2022-02-04 08:46:27 1
years_sub(now(),1) 2020-02-04 08:46:27 2
months_add(now(),1) 2021-03-04 08:46:27 3
months_sub(now(),1) 2021-01-04 08:46:27 4
add_months(now(),1) 2021-03-04 08:46:27 5
weeks_add(now(), 1) 2021-02-11 08:46:27 6
weeks_sub(now(), 1) 2021-01-28 08:46:27 7
days_add(now(),1) 2021-02-05 08:46:27 8
days_sub(now(), 1) 2021-02-03 08:46:27 9
date_add(now(), 1) 2021-02-05 08:46:27 10
date_sub(now(), 1) 2021-02-03 08:46:27 11
adddate(now(),1) 2021-02-05 08:46:27 12
subdate(now(),1) 2021-02-03 08:46:27 13
hours_add(now(),1) 2021-02-03 09:46:27 14
hours_sub(now(),1) 2021-02-03 07:46:27 15
minutes_add(now(),1) 2021-02-03 08:47:27 16
minutes_sub(now(),1) 2021-02-03 08:45:27 17
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论