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小时内删除。