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

MySQL内置函数(8)

文章目录

  • 前言
  • 一、日期函数
  • 二、字符串函数
  • 三、数学函数
  • 四、其它函数
  • 总结


前言

  其实在之前的几篇中我们也用到了内置函数,现在我们再来系统学习一下它!


一、日期函数

函数名称描述
current_date()获取当前日期
current_time()获取当前时间
current_timestamp()获取当前时间戳
date(datetime)返回 datetime 参数的日期部分
date_add(date, interval d_value_type)在 date 中添加日期或时间,interval 后的数值单位可以是 year、minute、second、day
date_sub(date, interval d_value_type)在 date 中减去日期或时间,interval 后的数值单位可以是 year、minute、second、day
datediff(date1, date2)计算两个日期之间的差值,单位是天
now()获取当前日期时间
  • 获取当前日期
SELECT current_date();
  • 获取当前时间
SELECT current_time();
  • 获取当前时间戳
SELECT current_timestamp();
  • 获取当前日期时间
SELECT now();

在这里插入图片描述

  • 截断当前时间,只获得日期部分
SELECT date(now());
  • 在日期的基础上加日期
SELECT date_add(now(), interval 10 year);
  • 在日期的基础上减去时间
SELECT date_sub(now(), interval 10 minute);
  • 计算两个日期之间相差多少天
SELECT datediff(now(), '1949-10-01');

在这里插入图片描述
  学了以上函数总得来个实际案例来试验一下

  创建一张记录生日的表

CREATE TABLE tmp(id INT PRIMARY KEY AUTO_INCREMENT,birthday DATE NOT NULL
);

  虽然 current_time() 这里显示的是时分秒,实际上插入的时候也能插入,所有的时间在获取的时候都是 年-月-日,时:分:秒,只不过显示时是不一样的。

在这里插入图片描述

  创建一个留言表

CREATE TABLE msg(							id INT PRIMARY KEY AUTO_INCREMENT,content VARCHAR(100) NOT NULL,sendtime DATETIME
);

  显示所有留言信息,发布日期只显示日期

SELECT content, date(sendtime) FROM msg;

在这里插入图片描述
  然后我们查看2分钟内发的贴子

SELECT * FROM msg WHERE date_add(sendtime, interval 2 minute) > now();

在这里插入图片描述

二、字符串函数

函数名称描述
charset(str)返回字符串字符集(编码集)
concat(string [,…])连接字符串
instr(string, substring)返回子字符串在字符串中的位置,无则返回0(mysql 起始从 1 开始
ucase(string)转换成大写
lcase(string)转换成小写
left(string, length)从字符串左边起取 length 个字符
right(string, length)从字符串右边起取 length 个字符
length(string)字符串长度
replace(str, search_str, replace_str)在字符串中用 replace_str 替换 search_str
strcmp(string1, string2)逐字符比较两个字符串大小
substring(str, position [,length])从字符串的 position 开始,取 length 个字符
ltrim(string), rtrim(string), trim(string)去除前后空格
  • 获取 emp 表的 ename 列的字符集
SELECT charset(ename) FROM emp;
  • 连接字符串
SELECT concat(name, '的语文是', chinese, '分,', '数学', math, '分,', '英语', english, '分') FROM exam_result;

在这里插入图片描述

  • 求学生表中学生姓名占用的字节数
select length(name) from exam_result;

  以前说过 mysql 的字符真的就是一个字符,utf8中一个汉字占3个字节。

  length函数返回字符串长度,以字节为单位。如果是多字节字符则计算多个字节数;如果是单字节字符则算作一个字节。比如:字母,数字算作一个字节,中文表示多个字节数(与字符集编码有关)
在这里插入图片描述

  • 截取 emp 表中 ename 字段的第二个到第三个字符
SELECT ename, substring(ename, 2, 2) FROM emp;

在这里插入图片描述

  • 以首字母小写的方式显示所有员工的姓名
SELECT ename, concat(lcase(substring(ename, 1, 1)), substring(ename, 2)) FROM emp;

在这里插入图片描述
  substring(ename, 1, 1) 从第一个开始,截一个字符

三、数学函数

函数名称描述
abs(number)绝对值函数
bin(decimal_number)十进制转二进制
hex(decimalNumber)转换成十六进制
conv(number, from_base, to_base)进制转换
ceiling(number)向上去整(数据变大
floor(number)向下去整
format(number, decimal_places)格式化,保留小数位数
rand()返回随机浮点数,范围 [0.0, 1.0)
mod(number, denominator)取模,求余
  • ceiling(number) 向上去整
  • floor(number) 向下去整

  一般我进行取整的时候是进行 四舍五入 取整,但是除了 四舍五入 还有其他的取整方式。我们把丢弃小数部分的取整方式称为向0取整,以前我们在 C 学的 9 / 2 = 4 就是向0取整,还有向大的方向取的向上取整、向小的方向取的向下取整

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

四、其它函数

  查询当前用户

SELECT user();

  显示当前正在使用的数据库

SELECT database();

在这里插入图片描述
  一个字符串进行md5摘要,摘要后得到一个32位字符串

select md5(string);

在这里插入图片描述
  如果 val1 为null,返回 val2 ,否则返回 val1 的值

IFNULL(val1, val2) -- 如果 `val1` 为 `NULL`,返回 `val2`,否则返回 `val1` 的值

在这里插入图片描述


总结

  以上函数提供了丰富的操作能力,使得在处理数据时更加灵活和方便,因此我们需要好好掌握!!!

http://www.dtcms.com/a/274821.html

相关文章:

  • [1-03-02].第06节:常用命令 - 文件操作命令
  • 2025年主流数据库连接池推荐:从原理到场景的深度解析
  • 【Python练习】037. 编写一个函数,实现二分查找算法
  • 你见过的最差的程序员是怎样的?
  • VOB如何转换成MP4格式?3种快速转换教程推荐
  • (LeetCode 面试经典 150 题 ) 15. 三数之和 (排序+双指针)
  • UML 图类型全解析:结构图与行为图分类详解
  • 拼多多电商运营技巧---补坑产经验
  • 软件测试(白盒测试)
  • 用FunctionCall实现文件解析(二):创建单例客户端
  • 2025亚太中文赛项 B题疾病的预测与大数据分析保姆级教程思路分析
  • JVM方法区的运行时常量区到底存储哪些数据?
  • 【南金研CAN数采仪助力福田祥菱 QEV车型售后问题处理
  • 制作 ext4 文件系统
  • java 导入利用布隆BloomFilter
  • SSE事件流简单示例
  • Paimon 写入磁盘文件名字生成机制
  • 2025年NSSCTF-青海民族大学 2025 新生赛WP
  • 学习C++、QT---20(C++的常用的4种信号与槽、自定义信号与槽的讲解)
  • 动力系统模拟与推导-AI云计算数值分析和代码验证
  • BLE低功耗设计:从广播模式到连接参数优化的全链路分析与真题解析
  • Django母婴商城项目实践(一)
  • 【JMeter】接口加密
  • 蜗轮丝杆升降机拆装图
  • 在多个DHCP服务器的网络环境中选择指定的DHCP服务
  • Windows GNU Radio避坑
  • 深入探究编程拷贝
  • mysql的性能优化:组提交、数据页复用、全表扫描优化、刷脏页
  • Vue 表单开发避坑指南:从响应式数据到动态规则的实践总结
  • Go 编译报错排查:vendor/golang.org/x/crypto/cryptobyte/asn1 no Go source files