当前位置: 首页 > news >正文

【MySQL】内置函数

目录

日期时间类函数

字符串函数

数学函数

其他函数


日期时间类函数

这类函数用于获取服务器当前的日期、时间或时间戳。

函数返回值示例 (假设当前时间是 2026-06-30 15:30:00)
CURRENT_DATE()当前日期,格式为YYYY-MM-DD2026-06-30
CURRENT_TIME()当前时间,格式为HH:MM:SS15:30:00
CURRENT_TIMESTAMP()或NOW()当前日期和时间,格式为YYYY-MM-DD HH:MM:SS2026-06-30 15:30:00
DATE(datetime)返回参数的年月日的部分DATE(2026-06-30 15:30:00),返回2026-06-30;DATE(NOW())同理
date_add(date,interval d_value_type)返回 date 加上 d_value_type 后的日期

date_add('2026-06-30 15:30:00',interval 10 day

),返回 2026-07-10 15:30:00,date_add(now(),interval 10 day)同理.day 可以是 minute 或 second

date_sub(date,interval d_value_type)返回 date 减去 d_value_type 后的日期类比 date_add
datediff(date1,date2)返回 date1 - date2 ,单位是 daydatediff('2017-10-10', '2016-9-1') 返回 404,datediff(date(now()),2016-9-1)同理

案例:生日表

// 创建一张表,记录生日 create table tmp( id int primary key auto_increment, birthday date ); // 注意 date 是 date 类型的 // 添加当前日期: insert into tmp(birthday) values(current_date()); insert into tmp(birthday) values(current_time()); mysql> select * from tmp; +----+------------+ | id | birthday | +----+------------+ | 1 | 2017-11-19 | +----+------------+ | 2 | 2017-11-19 | +----+------------+

从上面的案例我们注意到:current_time() 返回的是时分秒,居然可以正确赋值给 date 类型的 birthday。

案例:获取两分钟以内的评论

// 创建一个留言表 mysql> create table msg ( id int primary key auto_increment, content varchar(30) not null, sendtime datetime ); // 插入数据 mysql> insert into msg (content,sendtime) values('纸上得来终觉浅', now()); mysql> insert into msg (content,sendtime) values('恐惊天上人', now()); // 获取两分钟以内的评论 mysql> select content,sendtime from msg mysql> where datediff(now(),interval 2 minute) < sendtime;

字符串函数

函数返回值示例
charset('str')返回str的编码集

charset('abc'),返回 utf8

select charset(column_name) form table_name,返回表中某一列的编码集

concat('str1','str2','str3',...)返回拼接后的字符串

concat('a','b','c') 返回 abc

concat('abc','bef'),返回abcdef

instr('str1','str2')返回 str2 在 str1 出现的位置,没有就返回 0instr('abc','b')返回 1
ucase('str')将str转换为大写ucase('abc123')返回 ABC123
lcase('str')将str转换为小写ucase('ABC123')返回 abc123
left('str',len) 和 right('str',len)

left从str开始提取 len 个字符,right从str结尾提取 len 个字符,

left('abc1234',4)返回 abc1,right('abc1234',4) 返回 1234
length('str‘)返回str的长度,单位是字节

length('abc') 返回 3,

length('中国') 返回 6

replace('str','aim_str','replace_str')在 str 中找到 aim_str,并将它替换为 replace_str

replace('abcXXX1234','XXX',def),'

abcXXX1234变成abcdef1234

strcmp('str1','str2')比较 str1 和 str2 的字典序大小,如果 str1 = str2 返回 0,如果 str1 > str2 返回 1,如果 str1 < str2,返回 -1

strcmp('abc','abc') 返回 0

strcmp('bbc','abc') 返回 1

strcmp('abc','bbc') 返回 -1

substring('str',pos,len)从 str 的 pos 位置开始截取 len 长度的 字符串.len 可以省略,表示截取到末尾

substring('abcdef',4,3) 返回 def

substring('abcdef',2) 返回bcdef

ltrim('str')、rtrim('str')、trim('str')trim:意为修剪,ltrim:将str左边的空格去掉,rtrim:将str右边的空格去掉,trim:将str左边和右边的空格都去掉

ltrim(' abc ')返回’abc ‘

rtrim(' abc ')返回’ abc‘

trim(' abc ')返回’abc‘

数学函数

函数说明示例
ABS(x)返回x绝对值ABS(-5.6)5.6
bin(x)十进制转二进制bin(10) → 1010
hex(x)十进制转十六进制bin(11) → B
conv(x,进制1,进制2)将 x 从进制1转换为进制2conv(10,10,2) → 1010
MOD(x, y)x % y返回x除以y余数(取模)MOD(10, 3)1
10 % 31
CEIL(x)CEILING(x)返回不小于x的最小整数(向上取整)CEIL(3.14)4
CEIL(-3.14)-3
FLOOR(x)返回不大于x的最大整数(向下取整)FLOOR(3.14)3
FLOOR(-3.14)-4
format(x,y)保留 x 的 y 位小数(不做四舍五入)format(3.1415926,4) → 3.1415
ROUND(x, d)x四舍五入到d位小数;若d省略则取整为整数ROUND(3.14159, 2)3.14
ROUND(3.5)4
TRUNCATE(x, d)x截断d位小数(不四舍五入)TRUNCATE(3.14159, 2)3.14
rand()返回随机浮点数,范围 [0.0,1.0)0.17174184338351883

其他函数

函数说明示例
user()查询当前用户\
database()查询当前在哪个数据库bin(10) → 1010
md5('str')对一个字符串进行md5摘要,摘要后得到一个32位字符串,通常用于数据库对用户密码进行加密

md5('1234') →

81dc9bdb52d04dc20036db...

password('str')专门用于数据库对用户密码进行加密

password('1234') →

*A4B6157319038724E3560....

ifnull('str1','str2')如果 str1 为 null,返回 str2,否则返回 str1

ifnull('abc','123') →abc

ifnull('abc',null) →abc

ifnull(null,'123') →123

ifnull(null,null) →null

http://www.jsqmd.com/news/1101610/

相关文章:

  • WVP-GB28181-Pro视频点播超时故障终极解决方案:从根源诊断到系统化根治
  • 一套后端API驱动四端——织码在线教育系统多端统一学习体验设计
  • GitHub Copilot Review vs DeepCode vs SonarQube AI(2024企业级对比白皮书)
  • Claude Code性能瓶颈诊断工具箱:CPU占用飙升、延迟突增、token泄漏——3分钟定位根因(含实时监控脚本)
  • 别再手动数氢键了!用Materials Studio脚本一键搞定周期性体系统计(附完整Perl代码)
  • 【VMware快照恢复生死线】:93%运维工程师忽略的3个致命陷阱及5分钟应急修复指南
  • 第 1 章 布尔检索
  • 别再手动Review AI代码了!这套自动化校验流水线让缺陷检出率提升4.8倍(含开源RuleSet + SonarQube插件)
  • 别再死磕SPWM了!手把手教你用STM32实现SVPWM驱动PMSM电机(附代码)
  • 手把手教你用STC89C52单片机读取MPU6050数据,并在LCD1602上实时显示(附完整代码)
  • 琳恩纳模式系统小程序开发
  • 功能测试详解
  • 告别杜邦线!用STM32F103C6T6自制MPU6050+QMC5883L九轴传感器模块(含蓝牙无线传输)
  • 开题写作效率拉满!okbiye 专属开题 AI 模块,一站式搞定毕业第一道关卡
  • Rich:让 Python 终端输出变得丰富好看
  • 实战指南:如何用OBS RTSP服务器插件实现高效专业直播推流
  • PAT考生迟到别慌!用C语言结构体快速实现座位号查询系统(附完整代码)
  • 别再只用SE了!手把手教你用PyTorch实现更轻量的ECA注意力模块(附完整代码)
  • 打破田间“信号孤岛”,乾元通多链路聚合路由筑基智慧农业新底座
  • 掌握Verilog-2001中的Function:语法、应用与设计实践
  • 基于关键点轨迹分析的奶牛社交行为识别技术
  • 苹果开放跨设备直连,瑞昱率先交卷:iOS 26 Wi-Fi Aware实测通关!
  • 四大主流图标库硬核横评:AI Agent 时代,谁是最佳拍档
  • Postman接口压力测试六步法:快速验证并发性能的轻量级方案
  • YOLOv5模型瘦身实战:用torch_pruning 0.2.7给模型‘减肥’,附完整代码与避坑指南
  • 别再只盯着CNN了!手把手带你用PyTorch从零搭建ViT模型(附完整代码)
  • 别再死记硬背公式了!用Python+SymPy实战推导圆柱面方程(附完整代码)
  • BiliDownloader:如何用开源技术实现B站视频的高效下载?
  • VMware虚拟机克隆全场景实战:从完整克隆到链接克隆,4步完成零故障迁移
  • 桌面分区管理神器:NoFences让你的Windows桌面告别混乱时代