impala时间函数最全版(强烈建议收藏) 您所在的位置:网站首页 时间函数计算天数 impala时间函数最全版(强烈建议收藏)

impala时间函数最全版(强烈建议收藏)

2024-07-07 10:59| 来源: 网络整理| 查看: 265

impala时间函数最全版(强烈建议收藏)

本文基于impala3.2版本,所有的内置时间函数;

文章目录 impala时间函数最全版(强烈建议收藏)一、补充概念说明二、获取当前时间戳函数三、时间计算函数四、获取时间指定单位函数五、时间比较函数六、时间格式转换函数

一、补充概念说明

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 的形式,这里进行了简写;

二、获取当前时间戳函数 序号语法类型/方法名称输出类型使用说明1current_timestamp()timestamp返回客户端所在时区的当前时间戳2now()timestamp返回客户端所在时区的当前时间戳3unix_timestamp()bigint返回客户端所在时区的当前时间戳的整数形式4utc_timestamp()timestamp返回客户端时间对应UTC时区的当前时间戳5timeofday()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 三、时间计算函数 序号语法类型/方法名称输出类型使用说明1years_add(timestamp/date date, int/bigint years)timestamp/date增加指定年数2years_sub(timestamp/date date, int/bigint years)timestamp/date减少指定年数3months_add(timestamp/date date, int/bigint months)timestamp/date增加指定月数4months_sub(timestamp/date date, int/bigint months)timestamp/date减少指定月数5add_months(timestamp/date date, int/bigint months)timestamp/date增加指定月数6weeks_add(timestamp/date date, int/bigint weeks)timestamp/date增加指定周数7weeks_sub(timestamp/date date, int/bigint weeks)timestamp/date减少指定周数8days_add(timestamp/date startdate, int/bigint days)timestamp/date增加指定天数9days_sub(timestamp/date startdate, int/bigint days)timestamp/date减少指定天数10date_add(timestamp/date startdate, int/bigint days)timestamp/date增加指定天数11date_sub(timestamp/date startdate, int/bigint days)timestamp/date减少指定天数12adddate(timestamp/date startdate, int/int days)timestamp/date增加指定天数13subdate(timestamp/date startdate,bigint/int days)timestamp/date减少指定天数14hours_add(timestamp date, int/bigint hours)timestamp增加指定小时15hours_sub(timestamp date, int/bigint hours)timestamp减少指定小时16minutes_add(timestamp date, int/bigint minutes)timestamp增加指定分钟17minutes_sub(timestamp date, int/bigint minutes)timestamp减少指定分钟18seconds_add(timestamp date, int/bigint seconds)timestamp增加指定秒数19seconds_sub(timestamp date, int/bigint seconds)timestamp减少指定秒数20milliseconds_add(timestamp t, int/bigint s)timestamp增加指定毫秒数21milliseconds_sub(timestamp t, int/bigint s)timestamp减少指定毫秒数22microseconds_add(timestamp t, int/bigint s)timestamp增加指定微秒数23microseconds_sub(timestamp t, int/bigint s)timestamp减少指定微秒数24nanoseconds_add(timestamp t, int/bigint s)timestamp增加指定纳秒数25nanoseconds_sub(timestamp t, int/bigint s)timestamp减少指定纳秒数26date_add(timestamp/date startdate, interval_expression)timestamp/date使用参数计算日期增量值(增加)27date_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 seconds_add(now(),1) 2021-02-04 08:46:28 18 seconds_sub(now(),1) 2021-02-04 08:46:26 19 milliseconds_add(now(),1000) 2021-02-04 08:46:28.707274000 20 milliseconds_sub(now(),1000) 2021-02-04 08:46:26.707274000 21 microseconds_add(now(),1000) 2021-02-04 08:46:27.708274000 22 microseconds_sub(now(),1000) 2021-02-04 08:46:27.706274000 23 nanoseconds_add(now(),1000) 2021-02-04 08:46:27.707275000 24 nanoseconds_sub(now(),1000) 2021-02-04 08:46:27.707273000 25 date_add(now(),interval 2 months) 2021-04-04 08:46:27 26 date_sub(now(),interval 2 hours) 2021-02-04 06:46:27 27 四、获取时间指定单位函数 序号语法类型/方法名称输出类型使用说明1year(timestamp/date date)int获取年2quarter(timestamp/date date)int获取季节(1,2,3,4)3month(timestamp/date date)int获取月4monthname(timestamp/date date)string获取月份名称5week(timestamp/date date)int获取周(1-53)6weekofyear(timestamp/date date)int获取周(1-53)7dayofweek(timestamp/date date)int获取天(本周第多少天,周日算第一天)8dayname(timestamp/datedate)string获取天(星期几)9next_day(timestamp/date date,String weekday)timestamp/date获取天(返回下一个指定星期几的日期)10day(timestamp/date date)int获取天(本月第多少天)11dayofmonth(timestamp/date date)int获取天(本月第多少天)12last_day(timestamp/date date)timestamp/date获取天(本月的最后一天日期)13dayofyear(timestamp/date date)int获取天(本年第多少天)14hour(timestamp date)int获取小时15minute(timestamp date)int获取分钟16second(timestamp date)int获取秒17millisecond (timestamp date)int获取毫秒18extract(timestamp/date date,String unit)bigint获取参数指定的时间单位19extract(unit from timestamp/date date)bigint获取参数指定的时间单位20date_part(string unit,timestamp timestamp)bigint获取参数指定的时间单位21trunc(timestamp/date date,String unit)timestamp/date获取截断为指定单位的时间22date_trunc(string unit,timestamp/date date)timestamp/date获取截断为指定单位的时间

补充说明: ①extract 的时间单位可以使用如下:YEAR,QUARTER,MONTH,DAY,HOUR,MINUTE,SECOND,MILLISECOND,EPOCH(转成数字类型)【单位不区分大小写】

​ ②date_part和extract支持的时间单位一致;对于小时,分秒这些都是不知道date类型操作的(因为date只到天)

​ ③date_trunc的时间单位可以使用如下:MILLENNIUM(千年),CENTURY(百年),DECADE(十年),YEAR,MONTH,WEEK,DAY,HOUR, MINUTE,SECOND,MILLISECONDS(毫秒),MICROSECONDS(微妙)【单位不区分大小写】

​ ④trunc的时间单位可以使用如下:

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分钟

示例如下:执行时间北京时间:2021-02-04 08:46:27.707274000;(星期四)

--使用示例 | 对应输出 | 对应函数序号 year(now()) 2021 1 quarter(now()) 1 2 month(now()) 2 3 monthname(now()) February 4 week(now()) 5 5 weekofyear(now()) 5 6 dayofweek(now()) 5 7 dayname(now()) Thursday 8 next_day(now(),'monday') 2021-02-08 08:46:27 9 day(now()) 4 10 dayofmonth(now()) 4 11 last_day(now()) 2021-02-28 00:00:00 12 dayofyear(now()) 35 13 hour(now()) 8 14 minute(now()) 46 15 second(now()) 27 16 millisecond (now()) 707 17 extract(now(),'year') 2021 18 extract(year from now()) 2021 19 trunc(now(),'year') 2021-01-01 00:00:00 20 date_trunc('year',now()) 2021-01-01 00:00:00 21 五、时间比较函数 序号语法类型/方法名称输出类型使用说明1datediff(timestamp/date enddate, timestamp/date startdate)int返回endDate比startDate多多少天2int_months_between(timestamp/date t1, timestamp/date t2)int返回两个日期相差的整数月份个数3months_between(timestamp/date t1, timestamp/date t2)double返回浮点数的月数相差的数4date_cmp(DATE date1, DATE date2)int比较是否相等,返回-1,0,1,null四种数值5timestamp_cmp(timestamp t1,timestamp t2)int比较是否相等,返回-1,0,1,null四种数值

补充说明: ①计算天数和月份相差的值,都是省略掉time的部分,只比较date的部分;(比如23:59:00和 00:02:00也是差一天)

示例如下:执行时间北京时间:2021-02-04 08:46:27.707274000;(星期四)

--使用示例 | 对应输出 | 对应函数序号 datediff('2020-07-31', '2020-07-30') 1 1 int_months_between('2020-03-31', '2020-01-20') 2 2 months_between('2020-02-28','2020-03-01') -0.12903225806451613 3 date_cmp('2021-01-01','2020-12-01') 1 4 timestamp_cmp('2021-01-01','2020-12-01') 1 5

六、时间格式转换函数 序号语法类型/方法名称输出类型使用说明1to_date(timestamp date)string返回时间戳对应的date2to_timestamp(bigint unixtime)timestamp返回整数对应的timestamp值3to_timestamp(string date,string pattern)timestamp返回字符串对应的timestamp值4to_utc_timestamp(timestamp t,string timezone)timestamp指定时区的时间戳转化为UTC时区的时间戳5from_timestamp(timestamp t,string pattern)string把timestamp按照pattern进行格式化6from_timestamp(string date,string pattern)string把date按照pattern进行格式化7from_unixtime(bigint unixtime)string把时间戳秒数转化为本地地区中的字符串8from_unixtime(bigint unixtime,string pattern)string时间戳转化为本地时区字符串,pattern格式9from_utc_timestamp(timestamp t,string timezone)timestampUTC时区指定时间戳转化为指定时区时间戳10unix_timestamp(string datetime)bigint把string类型的date或日期转化成时间戳Unix11unix_timestamp(timestamp datetime)bigint把string类型的timestamp转化成时间戳Unix12unix_timestamp(string datetime,string pattern)bigint日期按pattern转化成时间戳Unix

**补充说明:**①模式字符串使用说明:

模式描述y年M月d日H小时m分钟s秒S小数秒+/-hh:mm时区偏移+/-hhmm时区偏移+/-hh时区偏移

示例如下:执行时间北京时间:2021-02-04 08:46:27.707274000;(星期四)

--使用示例 | 对应输出 | 对应函数序号 to_date(now()) 2021-02-04 1 to_timestamp(1612399587) 2021-02-04 08:46:27 2 to_timestamp('2021/02/04','yyyy/MM/dd') 2021-02-04 00:00:00 3 to_utc_timestamp(now(),'Asia/Shanghai') 2021-02-04 00:46:27 4 from_timestamp(now(),'yyyy/MM') 2021/02 5 from_timestamp('2021-02-04','yyyy/MM') 2021/02 6 from_unixtime(1612399587) 2021-02-04 08:46:27 7 from_unixtime(1612399587,'yyyy/MM') 2021/02 8 from_utc_timestamp(now(),'Asia/Shanghai') 2021-02-04 16:46:27 9 unix_timestamp('2021-02-04') 1612368000 10 unix_timestamp(now()) 1612399587 11 unix_timestamp('2021-02-04 08:46:27-01:00', 1612403187 (相当于2021-02-04 09:46:27) 12 'yyyy-MM-dd HH:mm:ss-hh:mm' )


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有