MySQL的内置函数

1:日期函数

函数名称 功能描述
current_date() 获取当前日期
current_time() 获取当前时间
current_timestamp() 获取当前时间戳(日期 + 时间)
date(datetime) 提取 datetime 的日期部分
date_add (date, interval 数值 单位) 日期 / 时间加法
date_sub (date, interval 数值 单位) 日期 / 时间减法
datediff(date1, date2) 计算两个日期的天数差
now() 获取当前日期 + 时间

实验表

生日表tmp

sql 复制代码
-- 功能:存储用户ID与生日
CREATE TABLE tmp (
    id INT PRIMARY KEY AUTO_INCREMENT,  -- 自增主键
    birthday DATE  -- 生日(纯日期类型)
);

留言表

sql 复制代码
SELECT CURRENT_DATE();
sql 复制代码
-- 功能:存储留言内容、发布时间
CREATE TABLE msg (
    id INT PRIMARY KEY AUTO_INCREMENT,  -- 自增主键
    content VARCHAR(30) NOT NULL,       -- 留言内容(非空)
    sendtime DATETIME                   -- 发布时间(日期+时间)
);

1:获取当前日期

sql 复制代码
SELECT CURRENT_DATE();

2:获取当前时间

sql 复制代码
SELECT CURRENT_TIME();

3:日期加法

sql 复制代码
SELECT DATE_ADD('2017-10-28', INTERVAL 10 DAY);

4:日期减法

sql 复制代码
SELECT DATE_SUB('2017-10-01', INTERVAL 2 DAY);

5:计算日期天数差

sql 复制代码
SELECT DATEDIFF('2017-10-10', '2016-09-01');

6:插入当前日期到生日表

sql 复制代码
INSERT INTO tmp(birthday) VALUES (CURRENT_DATE());
SELECT * FROM tmp;

7:插入留言并查询2分钟内发布的内容

sql 复制代码
-- 插入测试数据
INSERT INTO msg(content,sendtime) VALUES('hello1', NOW()),('hello2', NOW());
-- 只显示日期(隐藏时间)
SELECT content, DATE(sendtime) FROM msg;
-- 查询2分钟内发布的帖子
SELECT * FROM msg WHERE DATE_ADD(sendtime, INTERVAL 2 MINUTE) > NOW();

2:字符串函数

函数名称 功能描述
charset(str) 返回字符串字符集
concat(s1,s2...) 拼接多个字符串
instr(str,sub) 子串首次出现位置(无则 0)
ucase/ucase 转大写 / 小写
left(str,len) 左侧截取指定长度
length(str) 字符串字节长度
replace(str,old,new) 字符串替换
substring(str,pos,len) 按位置截取字符串
trim/ltrim/rtrim 去除两侧 / 左 / 右空格

表结构

sql 复制代码
-- 功能:存储学生姓名、各科分数
CREATE TABLE student (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(20) NOT NULL,
    chinese INT,
    math INT,
    english INT
);
-- 插入测试数据
INSERT INTO student(name,chinese,math,english) 
VALUES('张三',90,85,95),('李四',88,92,80);
sql 复制代码
-- 功能:存储员工姓名
CREATE TABLE emp (
    id INT PRIMARY KEY AUTO_INCREMENT,
    ename VARCHAR(20) NOT NULL
);
-- 插入测试数据
INSERT INTO emp(ename) VALUES('SMITH'),('ALLEN'),('WARD');

1:查询员工姓名字符集

sql 复制代码
SELECT CHARSET(ename) FROM emp;

2:拼接学生成绩信息

sql 复制代码
SELECT CONCAT(name, '的语文是',chinese,'分,数学是',math,'分') AS '分数' FROM student;

3:计算姓名字节长度

sql 复制代码
SELECT LENGTH(name), name FROM student;

4:替换姓名中的字符

sql 复制代码
SELECT REPLACE(ename, 'S', '上海'), ename FROM emp;

5:截取姓名第2-3个字符

sql 复制代码
SELECT SUBSTRING(ename, 2, 2), ename FROM emp;

6:姓名首字母小写

sql 复制代码
SELECT CONCAT(LCASE(SUBSTRING(ename,1,1)),SUBSTRING(ename,2)) FROM emp;

3:数学函数

函数名称 功能描述
abs(num) 求绝对值
ceiling(num) 向上取整
floor(num) 向下取整
format(num,n) 保留 n 位小数(四舍五入)
rand() 生成 0~1 随机浮点数
mod(num,den) 取模 / 求余
conv(num,from,to) 进制转换

1:绝对值计算

sql 复制代码
SELECT ABS(-100.2);

2:向上/向下取整

sql 复制代码
SELECT CEILING(23.04), FLOOR(23.7);

3:保留2位小数

sql 复制代码
SELECT FORMAT(12.3456, 2);

4:生成随机数

sql 复制代码
SELECT RAND();

4:其他常用函数

函数名称 功能描述
user() 查询当前 MySQL 用户
database() 查询当前使用的数据库
md5(str) 字符串 MD5 加密(32 位)
password(str) MySQL 用户密码加密
ifnull(val1,val2) 空值替换(val1 为 null 返回 val2)

1:查询当前用户/数据库

sql 复制代码
SELECT USER(), DATABASE();

2:MD5加密

sql 复制代码
SELECT MD5('admin');

3

3:空值判断

sql 复制代码
SELECT IFNULL('abc', '123'), IFNULL(NULL, '123');
相关推荐
AI-好学者4 小时前
阶段一-图数据库基础与PropertyGraph模型
数据库·rag·knowledge graph·graphrag
其实防守也摸鱼5 小时前
运维--学习阶段问题解答(1)(自测)
linux·运维·服务器·数据库·学习·自动化·命令模式
懒鸟一枚6 小时前
深入理解 Linux 内存、Swap 交换分区与分页机制的关系
java·linux·数据库
龙仔7256 小时前
SQL Server 创建只读账号完整操作(分两种场景:SSMS图形界面 + T-SQL脚本)
数据库·sql·oracle
霁月的小屋6 小时前
生产环境中的事务实践——银行系统上线记(四)
数据库
Database_Cool_6 小时前
AI 应用数据底座首选:阿里云 PolarDB 为大模型 RAG 提供一体化支撑
数据库·阿里云
玖玥拾6 小时前
C# 语言进阶(十五)C# 游戏服务端 MySQL 数据库
服务器·开发语言·网络·数据库·mysql·c#
IvorySQL8 小时前
PG 日报|社区讨论重构 pg_hba 配置文件格式
数据库·人工智能·postgresql·重构·ivorysql
逝水无殇8 小时前
C# 文件的输入与输出详解
开发语言·数据库·后端·c#