前言
在这里记录下刷SQL题用到的函数(逐渐积累)
一、日期相关函数
1、获取年月日
1)获取年份:select year(CURRENT_DATE) AS 年 ;
2)获取月份:select month(CURRENT_DATE) AS 月;
3)获取日 :select day(CURRENT_DATE) AS 日;
2、日期时间戳转化
1)日期转化为时间戳:SELECT UNIX_TIMESTAMP(NOW()); // 1539238930
2)时间戳转化为日期:SELECT FROM_UNIXTIME(1539238971); // 2018/10/11 14:22:51
3、日期之差
1)日期相差 TIMESTAMPDIFF(unit,begin,end);
这个函数返回end-begin的结果,begin和end类型为DATE或者DATETIME表达式,unit为结果的单位,表示为整数。
参数 | 单位 |
---|---|
SECOND | 秒 |
MINUTE | 分钟 |
HOUR | 小时 |
DAY | 天 |
WEEK | 月份 |
MONTH | 月份 |
YEAR | 年份 |
4、日期格式化
1)data_format格式化为想要的格式
Mysql中:
select * from test where date_format(create_time,'%Y-%m-%d') = '2020-11-04' ;
Hive中:
select * from test where date_format(create_time,'yyyy-MM-dd') = '2020-11-04' ;
2)提取日期表达式中的日期部分
Mysql中:DATE(timestamp)
Hive中:to_date(string timestamp)
5、日期加减
1)MySQL中:DATE_ADD(date,INTERVAL expr type)
date 参数是合法的日期表达式。expr 参数是您希望添加的时间间隔。
2)Hive中:date_add(string startdate, intdays)
返回开始日期startdate增加days天后的日期。
二、数据格式相关函数
1、保留小数
1)round(x,d)
:x是要进行处理的数,d是保留的小数位数,round(x)默认不保留小数
2)cast(score as decimal(10,3))
:强制把score的类型转化为decimal(10,3),最多存储10位数字,小数为3位,即-9999999.999~9999999.999
三、字符串相关函数
1、字符串拼接
1)CONCAT(string A, string B…)
:参数可以为多个字符串,返回结果是一个字符串。PS:求比率时可以加%使用。
2)CONCAT_WS(separator, str1, str2,...)
:第一个参数是多个字符串之间的分隔符。
如果分隔符是 NULL,返回值也将为 NULL。这个函数会跳过分隔符参数后的任何 NULL 和空字符串。分隔符将被加到被连接的字符串之间
Hive> SELECT CONCAT_WS(",","First name","Second name","Last Name");
'First name,Second name,Last Name'