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;
相关推荐
流星白龙6 小时前
【Redis】2.Redis重大版本
数据库·redis·junit
流星白龙6 小时前
【Redis】7.Hash表
数据库·redis·哈希算法
流星白龙7 小时前
【Redis】4.基本全局命令
数据库·redis·缓存
王八八。8 小时前
Navicat 17破解版下载安装教程 附安装激活步骤(2026 最新版)
数据库·navicat
Jelena157795857929 小时前
电商运营分析数据比价接口实战:多平台价格监控与智能决策系统
java·大数据·数据库
流星白龙10 小时前
【Redis】3.Redis安装与命令行客户端
数据库·redis·缓存
二宝哥10 小时前
MySQL 修改密码策略详解:从基础到高级配置
mysql·密码学
马优晨11 小时前
DBeaver 连接 MySQL 完整排错教程
mysql·dbeaver连接mysql·dbeaver连mysql·dbeaver连接数据库·db连接mysql
凌虚11 小时前
基于 PostgreSQL WAL 构建 CDC 系统:原理与工程实现
数据库·后端·postgresql
BullSmall11 小时前
PostgreSQL 14 pg_dumpall 完整备份指南
数据库·postgresql·oracle