数值函数
- ROUND(a,b)–四舍五入,a为数值,b为精确到几位小数;
- TRUNCATE(a,b)–截断数字,a为数值,b为截断后保留小数位数;
- CEILING(a)–返回大于或等于这个数字的最小整数;
- FLOOR(a)–返回小于或等于这个数字的最大整数;
- ABS(a)–计算绝对值;
- RAND()–生成0-1区间的随机浮点数;(不用赋值,直接运行,每次运行结果都是不一样的0-1间浮点数);
例:
select truncate(5.7657,3);————5.765 select truncate(7.987498,2);————7.98 select ceiling(5.6);————6 select ceiling(5.2);————6 select floor(5.6);————5 select floor(5.2);————5 select abs(-5.6);————5.6 select abs(6.6);————6.6
字符串函数
- LENGTH()–计算字符串中的字符数;
- UPPER()–将字符串转化为大写;
- LOWER()–将字符串转化为小写;
- LTRIM()–移除字符串左侧的空白字符;
- RTRIM()–移除字符串右侧的空白字符;
- TRIM()–移除字符串前面以及后面的所有空格;
- LEFT(a,b)–返回字符串左侧几个字符,a为字符串,b为保留字符串左侧几位字符;
- RIGHT(a,b)–返回字符串右侧几个字符,a为字符串,b为保留字符串右侧几位字符;
- SUNSTRING(a,b,c)–可以得到一个字符串中任何位置的字符。a为字符串,b为起始位置,c为长度;
- SUNSTRING(a,b)–不输入长度参数,会得到从起始位置开始到字符串最后的所有字符;
- LOCATE(a,b)–返回第一个字符或者字符串第一次出现的位置,a为查找的字符或字符串,b为要查找的字符串。a不存在,结果返回0;
- REPLACE(a,b,c)–替换函数,用c替换b。a为字符串,b为替换什么,c为替换为什么。
- CONCAT(a,b)–串联两个字符串,a、b为两个字符串
- substring_index(FIELD, sep, n)–可以将字段FIELD按照sep分隔:
(1).当n大于0时取第n个分隔符(n从1开始)之后的全部内容;
(2).当n小于0时取倒数第n个分隔符(n从-1开始)之前的全部内容;
例:
select length('sky');————3 select length('哈哈');————6 select upper('sky');————SKY select lower('Sky');————sky select ltrim(' yes');————yes select rtrim('yes ');————yes select left('kindgarden',4);————kind select right('kindgarden',6);————garden select left('好好学习,天天向上',4);————好好学习 select right('好好学习,天天向上',4);————天天向上 select substring('kindgarden',5,3);————gar select substring('kindgarden',5);————garden select locate('n',kindgarden');————3 select replace('kindgarden','garden','garten');————kindgarten select concat('first_name',' ','last_name');————first_name last_name
日期函数
- NOW()–2022-03-14 12:34:03
- CURDATE()–2022-03-14
- CURTIME()–12:34:03
- YEAR()、MONTH()、DAY()、HOUR()、MINUTE()、SECOND()–返回年月日时分秒
- DAYNAME()–返回周几
- MONTHNAME()–返回月份
- EXTRACT(YEAR\MONTH\DAY\SECOND\MINUTE\HOUR FROM NOW())–从now()日期中提取年/月/日/秒/分/时
格式化日期和时间
- DATE_FORMAT(a,b)–将日期格式化,a为日期值,b为格式字符串;
- TIME_FORMAT(a,b)–时间格式化,a为日期值,b为格式字符串;
更多格式字符串谷歌搜索mysql date format string
例:
select date_format(now(), '%M %d %Y');————March 14 2022 select time_format(now(), '%H:%I %p');————12:45 PM
注意:
ymd大小写对于输出的日期有所不同
- %Y–2022; %y–22
- %M–March; %m–3
- %D–2nd; %d–02
计算日期和时间
- DATE_ADD(a,b)–在日期a基础上增加b的时间,a为日期,b为表达式(INTERVAL 1 DAY\YEAR…)
- DATE_SUB(a,b)–在日期a基础上减去b的时间,a为日期,b为表达式(INTERVAL 1 DAY\YEAR…)
- DATEDTFF(a,b)–计算两个日期或时间的间隔,a-b,a、b为两个日期。a、b若为日期(2022-03-05或2022-03-05 12:25:35),返回结果为天数
- TIME_TO_SEC(a)–返回从零点计算的秒数。用减法可计算a、b之间差的秒数。
- 时间差:
TIMESTAMPDIFF(interval, time_start, time_end)可计算time_start-time_end的时间差,单位以指定的interval为准,常用可选:
SECOND 秒
MINUTE 分钟(返回秒数差除以60的整数部分)
HOUR 小时(返回秒数差除以3600的整数部分)
DAY 天数(返回秒数差除以3600*24的整数部分)
MONTH 月数
YEAR 年数
例:
select date_add(now(),intercal 1 day);————2022-03-16 13:26:25 # 在now()日期基础上加一天 select date_add(now(),intercal 1 year);————2023-03-15 13:26:25 # 在now()日期基础上加一年 select date_add(now(),intercal -1 year);————2021-03-15 13:26:25 # 在now()日期基础上加负一年 select date_sub(now(),intercal 1 year);————2021-03-15 13:26:25 # 在now()日期基础上减一年 select datediff(2022-03-07,2022-03-03);————4 select time_to_sec('09:00');————32400 select time_to_sec('09:00')-select time_to_sec('09:02');————-120 select * from table where TIMESTAMPDIFF(MINUTE, start_time, submit_time) < 5
其他函数
- IFNULL(a,b)–如果a为NULL,则结果返回b;
- COALESCE(a,b,c,…)–如果a为NULL,结果返回b,如果b也NULL,则结果返回c。返回参数中的第一个非空值;
IFNULL与COALESCE区别:IFNULL可以用其他内容替换空值;而COALESCE会返回参数里的第一个非空值。
3、IF(expression,a,b)–第一个参数为条件,若为true则返回a,否则返回b。a、b可以为任何值,字符串、日期、数字、空值……;
4、CASE–有多个测试条件,且想要针对每个条件返回不同值的时候可以使用CASE运算符,格式如下:
CASE WHEN 条件1 THEN 返回值1 WHEN 条件2 THEN 返回值2 WHEN 条件3 THEN 返回值3 …… ELSE 返回值 END
注意:
- **count()**函数不计空值