1. 日期函数
1.1 常用日期函数概览
| 函数 |
描述 |
current_date() |
当前日期 |
current_time() |
当前时间 |
current_timestamp() |
当前日期和时间 |
date(datetime) |
返回日期部分 |
date_add(date, INTERVAL expr unit) |
日期加法 |
date_sub(date, INTERVAL expr unit) |
日期减法 |
datediff(date1, date2) |
日期差(天) |
now() |
当前日期时间 |
1.2 示例补充
sql
复制代码
-- 当前日期
SELECT current_date();
-- 当前时间
SELECT current_time();
-- 当前时间戳
SELECT current_timestamp();
-- 日期加法
SELECT date_add('2025-03-19', INTERVAL 10 DAY);
-- 日期减法
SELECT date_sub('2025-03-19', INTERVAL 5 DAY);
-- 日期差
SELECT datediff('2025-03-25', '2025-03-19');
-- 当前日期时间
SELECT now();
1.3 应用案例
案例1:记录生日表
sql
复制代码
CREATE TABLE birthday_table (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50),
birthday DATE
);
insert into tmp(birthday) values(current_date());
案例2:留言表,查询2分钟内发布的帖子
sql
复制代码
CREATE TABLE message (
id INT PRIMARY KEY AUTO_INCREMENT,
content VARCHAR(255),
sendtime DATETIME
);
INSERT INTO message (content, sendtime) VALUES ('hello', now());
SELECT * FROM message
WHERE sendtime > NOW() - INTERVAL 2 MINUTE;
2. 字符串函数
2.1 常用字符串函数
| 函数 |
描述 |
charset(str) |
返回字符集 |
concat(str1, str2, ...) |
拼接字符串 |
length(str) |
返回字节数 |
replace(str, from, to) |
替换字符串 |
substring(str, pos, len) |
截取子串 |
lcase(str) / lower(str) |
转小写 |
ucase(str) / upper(str) |
转大写 |
sql
复制代码
-- 查看字符集
SELECT charset(ename) FROM EMP;
-- 格式化输出
SELECT concat(name, '的语文是', chinese, '分,数学是', math, '分') AS 成绩 FROM exam_result;
-- 字节数(中文字符占多个字节)
SELECT length(name), name FROM student;
-- 替换
SELECT replace(ename, 'S', '上海') FROM EMP;
-- 截取
SELECT substring(ename, 2, 2) FROM EMP;
-- 首字母小写
SELECT concat(lcase(substring(ename, 1, 1)), substring(ename, 2)) FROM EMP;
3. 数学函数
3.1 常用数学函数
| 函数 |
描述 |
abs(x) |
绝对值 |
bin(x) |
十进制转二进制 |
hex(x) |
十进制转十六进制 |
conv(num, from, to) |
进制转换 |
ceiling(x) |
向上取整 |
floor(x) |
向下取整 |
format(x, d) |
格式化小数位数 |
rand() |
随机数 [0,1) |
mod(n, m) |
取模 |
3.2 示例补充
sql
复制代码
SELECT abs(-100);
SELECT ceiling(23.01); -- 24
SELECT floor(23.99); -- 23
SELECT format(123.4567, 2); -- 123.46
SELECT rand();
SELECT mod(10, 3); -- 1
4. 其它函数
4.1 常用函数
| 函数 |
描述 |
user() |
当前用户 |
md5(str) |
返回MD5摘要 |
database() |
当前数据库 |
password(str) |
加密(用于用户认证) |
ifnull(val1, val2) |
如果val1为null,返回val2 |
sql
复制代码
SELECT user();
SELECT md5('admin');
SELECT database();
SELECT password('root'); -- 注意:MySQL 8.0+ 已弃用
SELECT ifnull(null, '默认值');
SELECT ifnull('非空', '默认值');
5. 实战题补充
查找字符串中逗号出现的次数_牛客题霸_牛客网
sql
复制代码
select id,(length(string) - length(replace(string,',',''))) as cnt from strings;