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 分钟前
拆解复杂项目管理流程:用项目管理流程解决跨部门协作低效难题
大数据·运维·数据库·人工智能·产品运营
xhtdj6 分钟前
Uber 如何通过批处理实现单账户每秒30+次更新
大数据·数据库·人工智能·安全·动态规划
凭X而动32 分钟前
MySQL 5.7.44 部署
数据库·mysql·部署
IpdataCloud44 分钟前
跨境支付如何识别高风险IP?用IP风险画像服务选型与集成指南
服务器·网络·数据库·tcp/ip·安全
agilearchitect1 小时前
asyncpg:专为 asyncio 打造的 PostgreSQL 驱动
数据库·其他·postgresql
Adorable老犀牛1 小时前
MySQL Server Exporter:Prometheus 监控 MySQL/MariaDB 指南
mysql·prometheus·mariadb
凡人叶枫1 小时前
Effective C++ 条款08:别让异常逃离析构函数
java·linux·数据库·c++·嵌入式开发
herinspace1 小时前
管家婆财工贸软件中关于价格常见问题小结
服务器·网络·数据库·电脑·管家婆软件
北风toto2 小时前
本体和智能体协同核心5步骤(生成sql语句)
数据库·sql
IvorySQL2 小时前
PostgreSQL 技术日报 (6月10日)|多工具版本更新,PG19 图语法落地
数据库·postgresql