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;
相关推荐
电魂泡哥5 小时前
SQL出现filesort 一定慢吗
数据库·sql
muddjsv7 小时前
大中小型企业数据层配置规模分析与选型指南
数据库
Runawayliquor7 小时前
opbase:CANN 所有算子的公共地基
大数据·数据库·人工智能·算法
yangshicong7 小时前
第11章:结构化输出与数据提取 —— 让 AI 直接返回你想要的数据格式
数据库·人工智能·redis·python·langchain·ai编程
chimchim668 小时前
pg dblink使用查询
数据库
Java面试题总结8 小时前
java高频面试题(2026最新)
java·开发语言·jvm·数据库·spring·缓存
绝知此事9 小时前
【算法突围 02】树形结构与数据库索引:树形结构与数据库索引:从 BST 到 B+ 树的演化与 MySQL 优化
数据库·mysql·算法·面试·b+树
吴可可12310 小时前
用Teigha修改并保存CAD文件
数据库·算法·c#
yuzhiboyouye11 小时前
内连接,左连接,右连接怎么区别开来?
数据库
铭毅天下11 小时前
Easysearch 版本进化全图——从 ES 国产替代到 AI Native 搜索数据库
大数据·数据库·人工智能·elasticsearch·搜索引擎