【MySQL】内置函数
目录日期时间类函数字符串函数数学函数其他函数日期时间类函数这类函数用于获取服务器当前的日期、时间或时间戳。函数返回值示例 (假设当前时间是 2026-06-30 15:30:00)CURRENT_DATE()当前日期格式为YYYY-MM-DD2026-06-30CURRENT_TIME()当前时间格式为HH:MM:SS15:30:00CURRENT_TIMESTAMP()或NOW()当前日期和时间格式为YYYY-MM-DD HH:MM:SS2026-06-30 15:30:00DATE(datetime)返回参数的年月日的部分DATE(2026-06-30 15:30:00)返回2026-06-30DATE(NOW())同理date_add(date,interval d_value_type)返回 date 加上 d_value_type 后的日期date_add(2026-06-30 15:30:00,interval 10 day)返回 2026-07-10 15:30:00,date_add(now(),interval 10 day)同理.day 可以是 minute 或 seconddate_sub(date,interval d_value_type)返回 date 减去 d_value_type 后的日期类比 date_adddatediff(date1,date2)返回 date1 - date2 ,单位是 daydatediff(2017-10-10, 2016-9-1) 返回 404datediff(date(now()),2016-9-1同理案例生日表// 创建一张表记录生日 create table tmp( id int primary key auto_increment, birthday date ); // 注意 date 是 date 类型的 // 添加当前日期 insert into tmp(birthday) values(current_date()); insert into tmp(birthday) values(current_time()); mysql select * from tmp; ---------------- | id | birthday | ---------------- | 1 | 2017-11-19 | ---------------- | 2 | 2017-11-19 | ----------------从上面的案例我们注意到current_time() 返回的是时分秒居然可以正确赋值给 date 类型的 birthday。案例获取两分钟以内的评论// 创建一个留言表 mysql create table msg ( id int primary key auto_increment, content varchar(30) not null, sendtime datetime ); // 插入数据 mysql insert into msg (content,sendtime) values(纸上得来终觉浅, now()); mysql insert into msg (content,sendtime) values(恐惊天上人, now()); // 获取两分钟以内的评论 mysql select content,sendtime from msg mysql where datediff(now(),interval 2 minute) sendtime;字符串函数函数返回值示例charset(str)返回str的编码集charset(abc),返回 utf8select charset(column_name) form table_name返回表中某一列的编码集concat(str1,str2,str3...)返回拼接后的字符串concat(a,b,c) 返回 abcconcat(abc,bef)返回abcdefinstr(str1,str2)返回 str2 在 str1 出现的位置没有就返回 0instr(abc,b)返回 1ucase(str)将str转换为大写ucase(abc123)返回 ABC123lcase(str)将str转换为小写ucase(ABC123)返回 abc123left(strlen) 和 right(strlen)left从str开始提取 len 个字符,right从str结尾提取 len 个字符,left(abc1234,4)返回 abc1right(abc1234,4) 返回 1234length(str‘)返回str的长度单位是字节length(abc) 返回 3length(中国) 返回 6replace(str,aim_str,replace_str)在 str 中找到 aim_str并将它替换为 replace_strreplace(abcXXX1234,XXX,def),abcXXX1234变成abcdef1234strcmp(str1,str2)比较 str1 和 str2 的字典序大小,如果 str1 str2 返回 0如果 str1 str2 返回 1如果 str1 str2,返回 -1strcmp(abc,abc) 返回 0strcmp(bbc,abc) 返回 1strcmp(abc,bbc) 返回 -1substring(str,pos,len)从 str 的 pos 位置开始截取 len 长度的 字符串.len 可以省略表示截取到末尾substring(abcdef,4,3) 返回 defsubstring(abcdef,2) 返回bcdefltrim(str)、rtrim(str)、trim(str)trim意为修剪ltrim将str左边的空格去掉rtrim将str右边的空格去掉trim将str左边和右边的空格都去掉ltrim( abc )返回’abc ‘rtrim( abc )返回’ abc‘trim( abc )返回’abc‘数学函数函数说明示例ABS(x)返回x的绝对值ABS(-5.6)→5.6bin(x)十进制转二进制bin(10) → 1010hex(x)十进制转十六进制bin(11) → Bconv(x,进制1进制2)将 x 从进制1转换为进制2conv(10,10,2) → 1010MOD(x, y)或x % y返回x除以y的余数取模MOD(10, 3)→110 % 3→1CEIL(x)或CEILING(x)返回不小于x的最小整数向上取整CEIL(3.14)→4CEIL(-3.14)→-3FLOOR(x)返回不大于x的最大整数向下取整FLOOR(3.14)→3FLOOR(-3.14)→-4format(xy)保留 x 的 y 位小数(不做四舍五入)format(3.1415926,4) → 3.1415ROUND(x, d)将x四舍五入到d位小数若d省略则取整为整数ROUND(3.14159, 2)→3.14ROUND(3.5)→4TRUNCATE(x, d)将x截断到d位小数不四舍五入TRUNCATE(3.14159, 2)→3.14rand()返回随机浮点数范围 [0.0,1.0)0.17174184338351883其他函数函数说明示例user()查询当前用户\database()查询当前在哪个数据库bin(10) → 1010md5(str)对一个字符串进行md5摘要摘要后得到一个32位字符串,通常用于数据库对用户密码进行加密md5(1234) →81dc9bdb52d04dc20036db...password(str)专门用于数据库对用户密码进行加密password(1234) →*A4B6157319038724E3560....ifnull(str1,str2)如果 str1 为 null返回 str2否则返回 str1ifnull(abc,123) →abcifnull(abc,null) →abcifnull(null,123) →123ifnull(null,null) →null