大家好,我是小趴菜,今天来总结一下MySql中比较常用的一些函数,包括聚合函数,以及字符函数,包括日期和时间的一些函数操作
聚合函数
scss
Max():用于取得列或者表达式的最大值,适用于任务数据类型
Min():用于取得列或者表达式的最小值,适用于任务数据类型
Avg():用于取得列或者表达式的平均值,适用于数字类型
Sum():用于取得或者表达式的总和,使用于数字类型
Count():用户取得行数得总和
Instr():返回子字符串在字符串中第一次出现的位置
group_concat:将字符串从分组中连接成具有各种选项(如distinct,order by)的字符串
字符函数
scss
concat():将二个或多个字符串组合成一个字符串
select CONCAT(列名1,列名2) from 表名;
select CONCAT(列名1,'-' ,列名2) from 表名; -- 列名之间用 - 拼接
length()/char_length():以字节和字符获取字符串的长度
select id,title if(CHAR_LENGTH(content) > 20,CONCAT(LEFT(content,20),'..........'),content) content from 表明
left():获取指定长度的字符串的左边部分
select id,title,LEFT(content,20) content from 表名
reverse():字符反转
select REVERSE(content) content from 表名
replace():搜索并替换字符串中的子字符串
REPLACE(str列,old_string,new_string)
update 表名 set name = REPLACE(name,'xpc','mysql');
substring():从具有特定长度的位置开始提取一个子字符串
select substring(列名,6) from 表名
trim()/LTRIM/RTRIM:从字符串中删除不需要的字符
select TRIM(both from 列名) from 表名 -- 删除前后空格
select TRIM(leading from 列名) from 表名 -- 删除前面空格
select TRIM(trailing from 列名) from 表名 -- 删除后面空格
find_in_set():在逗号分割的字符串列表中找到一个字符串
select FIND_IN_SET('t','i,t,p,u,x');
LOWER(s)/LCASE(s):将字符串s中所有的字符都转为小写
select LOWER(列名) from 表名
UPPER(s)/UCASE(s):将字符串s中所有的字符都转为大写
select UPPER(列名) from 表名
format():格式化有特定区域设置的数字,摄舍入到小数位数
时间日期函数
scss
curdata():返回当前日期
select CURDATE();
select CURDATE()+0;
select CURRENT_DATE();
select current_data;
datediff():计算二个date值之前的天数
select datediff('2018-01-31','2018-02-31');
timediff():计算二个时间的差值
select TIMEDIFF('2017-12-31 23:34:32','2017-12-31 23:34:56');
day():获取指定日期月份的天
select DAY('2018-01-31');
select DAY(LAST_DAY('2018-02-01'));
date_add():将时间值添加到日志值
select DATE_ADD('2017-12-31 23:34:32'.interval 1 second); -- 加1秒
select DATE_ADD('2017-12-31 23:34:32'.interval 1 day); -- 加1天
select DATE_ADD('2017-12-31 23:34:32'.interval 1 year); -- 加1年,还有 month,week,hour
date_sub():从日期值中减去时间值
select DATE_SUB('2017-12-31 23:34:32'.interval 1 second); -- 减1秒
select DATE_SUB('2017-12-31 23:34:32'.interval 1 day); -- 减1天
select DATE_SUB('2017-12-31 23:34:32'.interval 1 year); -- 减1年,还有 month,week,hour
date_format():根据指定的日期格式格式化日期值
dayname():获取指定日期的工作日的名称,也就是返回今天是星期几
select DAYNAME('2018-01-01') -- 返回英文
set @@lc_time_names='ZH_CN';
select DAYNAME('2018-01-01') --设置中文,这时候返回的就是中文的星期几
dayofweek():返回日期的工作日索引
select DAYOFWEEK('2018-01-01'); 返回的是一个索引值,1-7代表周日-周六
extract():提取日期的一部分
seelct EXTRACT(day from '2018-04-23 15:23:53');
seelct EXTRACT(month from '2018-04-23 15:23:53');
seelct EXTRACT(hour from '2018-04-23 15:23:53');
now():返回当前日期和时间
month():返回一个表示指定日期的月份的整数
select MONTH('2018-04-23');
str_to_date():将字符串转换为基于指定格式的日期和时间值
sysdata():返回当前日期
select SYSDATE();
select SYSDATE(2);
week():返回一个日期的星期数值,这一天是在这一年的第几个星期
select WEEK('2018-3-31')
year():返回日期的年份
seelct YEAR('2018-3-31')