1.日期比较函数: datediff语法: datediff(string enddate,string startdate)
返回值: int 说明: 返回结束日期减去开始日期的天数。
举例:hive> select datediff('2016-12-30','2016-12-29'); 返回1
2.日期增加函数: date_add语法: date_add(string startdate, intdays)
返回值: string 说明: 返回开始日期startdate增加days天后的日期。
举例:hive>select date_add('2016-12-29',10); 返回2017-01-08
3.日期减少函数: date_sub语法: date_sub (string startdate,int days)
返回值: string 说明: 返回开始日期startdate减少days天后的日期。
举例:hive>select date_sub('2016-12-29',10); 返回2016-12-19
查询近30天的数据select * from table where datediff(current_timestamp,create_time)<=30;
create_time 为table里的字段,current_timestamp 返回当前时间 2018-06-01 11:00:00
4.to_date():日期时间转日期函数
select to_date('2015-04-02 13:34:12');
输出:2015-04-02
5.current_date():当前日期函数
hive> select current_date(); 返回:2019-12-23
6.case when语句:
case
when t2.charge_origin in (0, 10) then
'pc'
when t2.charge_origin = 22 then
'手机买家'
when t2.charge_origin = 28 then
'八戒校园APP'
else
'其他'
end as `终端`,
7.如何通过时间戳获取当前是多少点? create_time:1406714751
hour(from_unixtime(create_time))
select hour(from_unixtime(1406714751)) 返回:18
8.from_unixtime()函数,可以把时间戳格式的时间,转化为年月日时分秒格式的时间
select from_unixtime(1406707470,'yyyy-MM-dd HH:mm:ss');
10.year() 日期转年函数:
year语法: year(string date) 返回值: int
select year(from_unixtime(1406714751)) 返回:2014
11:month():日期转月函数
month语法: month (string date)
返回值: int
说明: 返回日期中的月份
select month(from_unixtime(1406714751)) 返回:7
12.day():日期转天函数
day语法: day (string date)
返回值: int
说明: 返回日期中的天。
举例:
hive> select day('2011-12-08 10:03:01');
8
13.hour():日期转小时函数
hour语法: hour (string date)
返回值: int
说明: 返回日期中的小时。
select hour('2011-12-08 10:03:01') ; 返回10
14.minute():日期转分钟函数:
minute语法: minute (string date)
返回值: int
说明: 返回日期中的分钟。
举例:
hive> select minute(’2011-12-08 10:03:01′) from dual;
15.second():日期转秒函数:
second语法: second (string date)
返回值: int
说明: 返回日期中的秒。
举例:
hive> select second(’2011-12-08 10:03:01′) from dual;
1
16.weekofyear():日期转周函数:
weekofyear语法: weekofyear (string date)
返回值: int
说明: 返回日期在当前的周数。
举例:
hive> select weekofyear(’2011-12-08 10:03:01′) from dual;
49
17.cast()类型转换函数
比如:
cast(date as date)
cast(timestamp as date)
cast(string as date)
cast(date as string)
18.round():取整函数:
round 语法: round(double a)
返回值: BIGINT
举例: select round(3.5) 返回:4.0
第二种语法:指定精度取整函数: round
语法: round(double a, int d)
返回值: DOUBLE
说明: 返回指定精度d的double类型
举例: select round(3.1415926,4) ;返回:3.1416
19、向下取整函数: floor
语法: floor(double a)
返回值: BIGINT
说明: 返回等于或者小于该double变量的最大的整数
hive> select floor(3.1415926) from iteblog;
3
hive> select floor(25) from iteblog;
25
20、向上取整函数: ceil
语法: ceil(double a)
返回值: BIGINT
说明: 返回等于或者大于该double变量的最小的整数
hive> select ceil(3.1415926) from iteblog;
4
hive> select ceil(46) from iteblog;
46
21、向上取整函数: ceiling
语法: ceiling(double a)
返回值: BIGINT
说明: 与ceil功能相同
hive> select ceiling(3.1415926) from iteblog;
4
hive> select ceiling(46) from iteblog;
46
22、取随机数函数: rand
语法: rand(),rand(int seed)
返回值: double
说明: 返回一个0到1范围内的随机数。如果指定种子seed,则会等到一个稳定的随机数序列
hive> select rand() from iteblog;
0.5577432776034763
hive> select rand() from iteblog;
0.6638336467363424
23.CONCAT()函数
CONCAT()函数用于将多个字符串连接成一个字符串。
CONCAT(str1,str2,…)
返回结果为连接参数产生的字符串。如有任何一个参数为NULL ,则返回值为 NULL。可以有一个或多个参数
24.CONCAT_WS函数
使用函数CONCAT_WS()。使用语法为:CONCAT_WS(separator,str1,str2,…)
CONCAT_WS() 代表 CONCAT With Separator ,是CONCAT()的特殊形式。第一个参数是其它参数的分隔符。分隔符的位置放在要连接的两个字符串之间。分隔符可以是一个字符串,也可以是其它参数。如果分隔符为 NULL,则结果为 NULL。函数会忽略任何分隔符参数后的 NULL 值。但是CONCAT_WS()不会忽略任何空字符串。 (然而会忽略所有的 NULL)。
SELECT CONCAT_WS(',','First name',NULL,'Last Name');返回结果为
| CONCAT_WS(',','First name',NULL,'Last Name') |
+----------------------------------------------+
| First name,Last Name |
+----------------------------------------------+
25.GROUP_CONCAT()函数
GROUP_CONCAT函数返回一个字符串结果,该结果由分组中的值连接组合而成。
使用表info作为示例,其中语句SELECT locus,id,journal FROM info WHERE locus IN('AB086827','AF040764');的返回结果为
+----------+----+--------------------------+
| locus | id | journal |
+----------+----+--------------------------+
| AB086827 | 1 | Unpublished |
| AB086827 | 2 | Submitted (20-JUN-2002) |
| AF040764 | 23 | Unpublished |
| AF040764 | 24 | Submitted (31-DEC-1997) |
+----------+----+--------------------------+
1、使用语法及特点:
GROUP_CONCAT([DISTINCT] expr [,expr ...]
[ORDER BY {unsigned_integer | col_name | formula} [ASC | DESC] [,col ...]]
[SEPARATOR str_val])
在 MySQL 中,你可以得到表达式结合体的连结值。通过使用 DISTINCT 可以排除重复值。如果希望对结果中的值进行排序,可以使用 ORDER BY 子句。
SEPARATOR 是一个字符串值,它被用于插入到结果值中。缺省为一个逗号 (","),可以通过指定 SEPARATOR "" 完全地移除这个分隔符。
可以通过变量 group_concat_max_len 设置一个最大的长度。在运行时执行的句法如下: SET [SESSION | GLOBAL] group_concat_max_len = unsigned_integer;
如果最大长度被设置,结果值被剪切到这个最大长度。如果分组的字符过长,可以对系统参数进行设置:SET @@global.group_concat_max_len=40000;
2、使用示例:
语句 SELECT locus,GROUP_CONCAT(id) FROM info WHERE locus IN('AB086827','AF040764') GROUP BY locus; 的返回结果为
+----------+------------------+
| locus | GROUP_CONCAT(id) |
+----------+------------------+
| AB086827 | 1,2 |
| AF040764 | 23,24 |
+----------+------------------+
语句 SELECT locus,GROUP_CONCAT(distinct id ORDER BY id DESC SEPARATOR '_') FROM info WHERE locus IN('AB086827','AF040764') GROUP BY locus;的返回结果为
+----------+----------------------------------------------------------+
| locus | GROUP_CONCAT(distinct id ORDER BY id DESC SEPARATOR '_') |
+----------+----------------------------------------------------------+
| AB086827 | 2_1 |
| AF040764 | 24_23 |
+----------+----------------------------------------------------------+
语句SELECT locus,GROUP_CONCAT(concat_ws(', ',id,journal) ORDER BY id DESC SEPARATOR '. ') FROM info WHERE locus IN('AB086827','AF040764') GROUP BY locus;的返回结果为
+----------+--------------------------------------------------------------------------+
| locus | GROUP_CONCAT(concat_ws(', ',id,journal) ORDER BY id DESC SEPARATOR '. ') |
+----------+--------------------------------------------------------------------------+
| AB086827 | 2, Submitted (20-JUN-2002). 1, Unpublished |
| AF040764 | 24, Submitted (31-DEC-1997) . 23, Unpublished |
四、CONCAT_WS(SEPARATOR ,collect_set(column))
===>GROUP_CONCAT()函数
在我们公司的hive(华为集群FunctionInsight)因为hive版本问题,并没有GROUP_CONCAT函数。只能用concat_ws和collect_set函数代替
但是排序性丧失。
26.instr(string str, string substr)
instr(string str, string substr) 查找字符串str中子字符串substr出现的位置,如果查找失败将返回0,如果任一参数为Null将返回null,注意位置为从1开始的。
返回值:int
来源:CSDN
作者:fengfengchen95
链接:https://blog.csdn.net/fengfengchen95/article/details/103661376