MySQL内置函数

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;
相关推荐
2401_879693872 小时前
将Python Web应用部署到服务器(Docker + Nginx)
jvm·数据库·python
reembarkation2 小时前
光标在a-select,鼠标已经移出,下拉框跟随页面滚动
java·数据库·sql
eggwyw2 小时前
MySQL-练习-数据汇总-CASE WHEN
数据库·mysql
星轨zb2 小时前
通过实际demo掌握SpringSecurity+MP中的基本框架搭建
数据库·spring boot·spring security·mp
treacle田2 小时前
达梦数据库-配置本地守护进程dmwatcher服务-记录总结
数据库·达梦数据库·达梦数据库local数据守护
wyt5314293 小时前
Redis的安装教程(Windows+Linux)【超详细】
linux·数据库·redis
CeshirenTester3 小时前
从数据库到结构化用例:一套可落地的测试智能体架构
数据库·架构
2301_793804693 小时前
Python数据库操作:SQLAlchemy ORM指南
jvm·数据库·python
不想看见4044 小时前
Qt 项目中实现良好封装(模块化设计)的详细流程指南
数据库·系统架构