【MySQL学习笔记】(七)内置函数

news2025/4/17 18:34:15

内置函数

  • 日期函数
    • 示例
    • 案例-1
    • 案例-2
  • 字符串函数
    • 示例
  • 数学函数
  • 其他函数

日期函数

在这里插入图片描述

示例

  • 获得当前年月日
mysql> select current_date();
+----------------+
| current_date() |
+----------------+
| 2023-09-03     |
+----------------+
1 row in set (0.00 sec)
  • 获得当前时分秒
mysql> select current_time;
+--------------+
| current_time |
+--------------+
| 09:20:15     |
+--------------+
1 row in set (0.00 sec)

  • 获得当前时间戳

mysql中该函数会自动将时间戳转化为年月日时分秒的格式

mysql> select current_timestamp();
+---------------------+
| current_timestamp() |
+---------------------+
| 2023-09-03 09:20:49 |
+---------------------+
1 row in set (0.00 sec)
  • date(datetime),返回 datetime 参数中的日期部分(年月日部分)
mysql> select date(current_date());
+----------------------+
| date(current_date()) |
+----------------------+
| 2023-09-03           |
+----------------------+
1 row in set (0.00 sec)

//虽然currnt_time()获得的只有时分秒时间,但该函数内部获得时间的时候是可以获得日期(年月日)的
mysql> select date(current_time());
+----------------------+
| date(current_time()) |
+----------------------+
| 2023-09-03           |
+----------------------+
1 row in set (0.00 sec)

mysql> select date(current_timestamp());
+---------------------------+
| date(current_timestamp()) |
+---------------------------+
| 2023-09-03                |
+---------------------------+
1 row in set (0.00 sec)
  • 在日期的基础上加上日期
//在 2023-9-3 的基础上加上 50 天
mysql> select date_add('2023-9-3',interval 50 day);
+--------------------------------------+
| date_add('2023-9-3',interval 50 day) |
+--------------------------------------+
| 2023-10-23                           |
+--------------------------------------+
1 row in set (0.00 sec)
  • 在日期的基础上减去日期
//在 2023-10-23 的基础上减去 50 天
mysql> select date_sub('2023-10-23',interval 50 day);
+----------------------------------------+
| date_sub('2023-10-23',interval 50 day) |
+----------------------------------------+
| 2023-09-03                             |
+----------------------------------------+
1 row in set (0.00 sec)

  • 计算两个日期相差多少天
mysql> select datediff('2023-9-3','2023-10-23');
+-----------------------------------+
| datediff('2023-9-3','2023-10-23') |
+-----------------------------------+
|                               -50 |
+-----------------------------------+
1 row in set (0.00 sec)

案例-1

  • 创建一张表,记录生日
mysql> create table tmp (id int primary key auto_increment,birthday date not null);
Query OK, 0 rows affected (0.01 sec)

mysql> desc tmp;
+----------+---------+------+-----+---------+----------------+
| Field    | Type    | Null | Key | Default | Extra          |
+----------+---------+------+-----+---------+----------------+
| id       | int(11) | NO   | PRI | NULL    | auto_increment |
| birthday | date    | NO   |     | NULL    |                |
+----------+---------+------+-----+---------+----------------+
2 rows in set (0.00 sec)

  • 添加当前日期
mysql> insert into tmp(birthday) values(current_date());
Query OK, 1 row affected (0.00 sec)

mysql> select* from tmp;
+----+------------+
| id | birthday   |
+----+------------+
|  1 | 2023-09-03 |
+----+------------+
1 row in set (0.00 sec)

案例-2

  • 创建一个留言表
mysql> create table msg(id int primary key auto_increment,content varchar(30) not null,sendtime datetime);
Query OK, 0 rows affected (0.01 sec)

mysql> desc msg;
+----------+-------------+------+-----+---------+----------------+
| Field    | Type        | Null | Key | Default | Extra          |
+----------+-------------+------+-----+---------+----------------+
| id       | int(11)     | NO   | PRI | NULL    | auto_increment |
| content  | varchar(30) | NO   |     | NULL    |                |
| sendtime | datetime    | YES  |     | NULL    |                |
+----------+-------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)
  • 插入数据
mysql> insert into msg(content,sendtime) values('hello',now());
Query OK, 1 row affected (0.00 sec)

mysql> insert into msg(content,sendtime) values('hi',now());
Query OK, 1 row affected (0.00 sec)

mysql> select* from msg;
+----+---------+---------------------+
| id | content | sendtime            |
+----+---------+---------------------+
|  1 | hello   | 2023-09-03 09:48:45 |
|  2 | hi      | 2023-09-03 09:48:52 |
+----+---------+---------------------+
2 rows in set (0.00 sec)
  • 显示所有留言信息,发布日期只显示到年月日,不用显示具体时间
mysql> select content ,date(sendtime) from msg;
+---------+----------------+
| content | date(sendtime) |
+---------+----------------+
| hello   | 2023-09-03     |
| hi      | 2023-09-03     |
+---------+----------------+
2 rows in set (0.00 sec)
  • 查询在 10 分钟内发布的帖子
mysql> select* from msg where date_add(sendtime,interval 10 minute) > now();
+----+---------+---------------------+
| id | content | sendtime            |
+----+---------+---------------------+
|  1 | hello   | 2023-09-03 09:48:45 |
|  2 | hi      | 2023-09-03 09:48:52 |
+----+---------+---------------------+
2 rows in set (0.00 sec)
理解:

------------------------------|-----------|-------------|------------------

                           初始时间     now()       初始时间+10min  

字符串函数

在这里插入图片描述

示例

  • 获取表中的某一列的字符集
mysql> select charset(content) from msg;
+------------------+
| charset(content) |
+------------------+
| utf8             |
| utf8             |
+------------------+
2 rows in set (0.00 sec)
  • 字符串连接
mysql> select concat('app','le');
+--------------------+
| concat('app','le') |
+--------------------+
| apple              |
+--------------------+
1 row in set (0.00 sec)
  • 某字符串中是否包含某子串,包含则返回出现的位置,未包含则返回 0
mysql> select instr('apple','ple');
+----------------------+
| instr('apple','ple') |
+----------------------+
|                    3 |
+----------------------+
1 row in set (0.00 sec)

mysql> select instr('apple','b');
+--------------------+
| instr('apple','b') |
+--------------------+
|                  0 |
+--------------------+
1 row in set (0.00 sec)
  • 转换成大写
mysql> select ucase('abcA');
+---------------+
| ucase('abcA') |
+---------------+
| ABCA          |
+---------------+
1 row in set (0.00 sec)
  • 转换成小写
mysql> select lcase('abcA');
+---------------+
| lcase('abcA') |
+---------------+
| abca          |
+---------------+
1 row in set (0.00 sec)
  • 从字符串的左边或者右边起取 length 个字符
mysql> select left('abcdef',2);
+------------------+
| left('abcdef',2) |
+------------------+
| ab               |
+------------------+
1 row in set (0.00 sec)

mysql> select right('abcdef',2);
+-------------------+
| right('abcdef',2) |
+-------------------+
| ef                |
+-------------------+
1 row in set (0.00 sec)
  • 获取字符串的长度
mysql> select length('abc');
+---------------+
| length('abc') |
+---------------+
|             3 |
+---------------+
1 row in set (0.00 sec)

mysql> select length('你好');
+------------------+
| length('你好')   |
+------------------+
|                6 |
+------------------+
1 row in set (0.00 sec)

注意:length函数返回字符串长度,以字节为单位。如果是多字节字符则计算多个字节数;
如果是单字节字符则算作一个字节。比如:字母,数字算作一个字节,中文表示多个字节数
(与字符集编码有关)

  • 在字符串中用某子串替换掉其中的子串
//在 ‘hello world’ 中用 ‘jack’ 替换掉 ‘world’
mysql> select replace('hello world','world','jack');
+---------------------------------------+
| replace('hello world','world','jack') |
+---------------------------------------+
| hello jack                            |
+---------------------------------------+
1 row in set (0.00 sec)
  • 逐字符比较字符串的大小
//第一个字符串小于第二个字符串返回 -1
mysql> select strcmp('abc','abd');
+---------------------+
| strcmp('abc','abd') |
+---------------------+
|                  -1 |
+---------------------+
1 row in set (0.00 sec)

//相等返回 0
mysql> select strcmp('abc','abc');
+---------------------+
| strcmp('abc','abc') |
+---------------------+
|                   0 |
+---------------------+
1 row in set (0.00 sec)

//大于返回 1
mysql> select strcmp('abd','abc');
+---------------------+
| strcmp('abd','abc') |
+---------------------+
|                   1 |
+---------------------+
1 row in set (0.00 sec)
  • 从字符串的第 position 开始,取 length 个字符
//从第一个位置开始取三个字符
mysql> select substring('abcdefg','1',3);
+----------------------------+
| substring('abcdefg','1',3) |
+----------------------------+
| abc                        |
+----------------------------+
1 row in set (0.00 sec)
  • 去除 前空格 / 后空格 / 前后空格
mysql> select '   hello   ' as res;
+-------------+
| res         |
+-------------+
|    hello    |
+-------------+
1 row in set (0.00 sec)

mysql> select ltrim('   hello   ') as res;//去除前空格
+----------+
| res      |
+----------+
| hello    |
+----------+
1 row in set (0.00 sec)

mysql> select rtrim('   hello   ') as res;//去除后空格
+----------+
| res      |
+----------+
|    hello |
+----------+
1 row in set (0.00 sec)

mysql> select trim('   hello   ') as res; //去除前后空格
+-------+
| res   |
+-------+
| hello |
+-------+
1 row in set (0.00 sec)

数学函数

在这里插入图片描述

  • 绝对值
mysql> select abs(-100.5);
+-------------+
| abs(-100.5) |
+-------------+
|       100.5 |
+-------------+
1 row in set (0.00 sec)
  • 向上取整
mysql> select ceiling(23.4);
+---------------+
| ceiling(23.4) |
+---------------+
|            24 |
+---------------+
1 row in set (0.00 sec)

  • 向下取整
mysql> select floor(24.7);
+-------------+
| floor(24.7) |
+-------------+
|          24 |
+-------------+
1 row in set (0.00 sec)

  • 保留小数位数
//保留2位小数位数(小数四舍五入)
mysql> select format(12.3456,2);
+-------------------+
| format(12.3456,2) |
+-------------------+
| 12.35             |
+-------------------+
1 row in set (0.00 sec)

  • 产生随机数
mysql> select rand();
+--------------------+
| rand()             |
+--------------------+
| 0.2013088168588549 |
+--------------------+
1 row in set (0.00 sec)

mysql> select rand();
+--------------------+
| rand()             |
+--------------------+
| 0.2613807602425858 |
+--------------------+
1 row in set (0.00 sec)

其他函数

  • user() 查询当前用户
  • md5(str)对一个字符串进行md5摘要,摘要后得到一个32位字符串
  • database()显示当前正在使用的数据库
  • password()函数,MySQL数据库使用该函数对用户加密
  • ifnull(val1, val2) 如果val1为null,返回val2,否则返回val1的值

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/966730.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

剑指 Offer 57 - II. 和为s的连续正数序列(简单)

题目&#xff1a; class Solution { public:vector<vector<int>> findContinuousSequence(int target) { //本题使用滑动窗口&#xff08;双指针&#xff09;int i1, j1; //定义左右边界&#xff0c;一般是左闭右开int sum0; //窗口内的和vector&…

区块链技术与应用 - 学习笔记1【引言】

大家好&#xff0c;我是比特桃。本系列主要将我之前学习区块链技术时所做的笔记&#xff0c;进行统一的优化及整合。其中大量笔记源于视频课程&#xff1a;北京大学肖臻老师《区块链技术与应用》公开课。肖老师的课让我找回了求知若渴般的感觉&#xff0c;非常享受学习这门课的…

2023/9/3周报

目录 摘要 文献阅读1 1、标题和提出问题 2、物理模型对于水质预测的缺陷 3、模型框架 4、相关公式 5、结果分析 文献阅读2 1、标题和提出问题 2、问题叙述 3、模型框架 4、误差修补 5、实验结果和分析 总结 摘要 本周阅读了2篇论文&#xff0c;分别为一种基于深…

ReactNative 井字游戏 实战

效果展示 需要的插件准备 此实战项目需要用到两个插件。 react-native-snackbar 底部信息提示组件。 react-native-vector-icons 图标组件。 安装组件&#xff1a; npm i react-native-snackbar npm i react-native-vector-icons npm i types/react-native-vector-icons /…

uni-app之android离线自定义基座

一 为什么要自定义基座 1&#xff0c;基座其实就是一个app&#xff0c;然后新开发的页面可以直接在手机上面显示&#xff0c;查看效果。 2&#xff0c;默认的基座就是uniapp帮我们打包好的基座app&#xff0c;然后我们可以进行页面的调试。 3&#xff0c;自定义基座主要用来…

Python:列表推导式

相关阅读 Python专栏https://blog.csdn.net/weixin_45791458/category_12403403.html?spm1001.2014.3001.5482 列表推导式使得创建特定列表的方式更简洁。常见的用法为&#xff0c;对序列或可迭代对象中的每个元素应用某种操作&#xff0c;用生成的结果创建新的列表&#xff…

VSC++: 奇怪的风吹

void 奇怪的风吹() {//缘由https://ask.csdn.net/questions/1062454int aa[]{15, 30, 12, 36, 11, 20, 19, 17, 16, 18, 38, 15, 30, 12, 36, 11, 20, 19, 17, 16, 18, 38, -1},j 0, a 0, y 0, z 0;while (aa[j] > 0){if (j && aa[j] > 35 || aa[j] < 15)…

CXL.cache D2H Message 释义

&#x1f525;点击查看精选 CXL 系列文章&#x1f525; &#x1f525;点击进入【芯片设计验证】社区&#xff0c;查看更多精彩内容&#x1f525; &#x1f4e2; 声明&#xff1a; &#x1f96d; 作者主页&#xff1a;【MangoPapa的CSDN主页】。⚠️ 本文首发于CSDN&#xff0c…

记录一下自己对linux分区挂载的理解

一直狠模糊&#xff0c;分两个区&#xff0c;一个挂载/, 一个挂载/home 两者是什么关系 实测 先看挂载的内容 然后umount /home后创建一个新文件 再挂载回去 发现旧分区又回来了&#xff0c;说明路径只是个抽象的概念&#xff0c;分区挂载&#xff0c;互相之间数据是不影响…

只有一个线程的程序(main函数)

C并发编程入门 目录 只有一个线程的程序 就是main函数所在的线程。 这个线程无需我们手动创建&#xff0c;main函数就是这个线程的执行体。 运行main函数&#xff0c;就是执行只有一个线程的程序。 线程是进程内正在执行的代码所在的函数 代码示例 #include <iostream&…

弹性盒子的使用

一、定义 弹性盒子是一种用于按照布局元素的一维布局方法&#xff0c;它可以简便、完整、响应式地实现各种页面布局。 容器中存在两条轴&#xff0c;主轴和交叉轴(相当于我们坐标轴的x轴和y轴)。我们可以通过flex-direction来决定主轴的方向。 主轴&#xff08;main axis&am…

CentOS 7.6源码安装gdb 12.1

参考文章&#xff1a;《GDB调试-从安装到使用》 gdb --version看一下当前gdb的版本&#xff0c;可以看到是7.6.1-120.el7。 https://www.sourceware.org/gdb/download/可以下载gdb源码。 sudo nohup wget https://sourceware.org/pub/gdb/releases/gdb-12.1.tar.xz &下…

CXL.cache H2D Message 释义

&#x1f525;点击查看精选 CXL 系列文章&#x1f525; &#x1f525;点击进入【芯片设计验证】社区&#xff0c;查看更多精彩内容&#x1f525; &#x1f4e2; 声明&#xff1a; &#x1f96d; 作者主页&#xff1a;【MangoPapa的CSDN主页】。⚠️ 本文首发于CSDN&#xff0c…

CXL Memory Cache 分类及 Cacheline 归属问题

&#x1f525;点击查看精选 CXL 系列文章&#x1f525; &#x1f525;点击进入【芯片设计验证】社区&#xff0c;查看更多精彩内容&#x1f525; &#x1f4e2; 声明&#xff1a; &#x1f96d; 作者主页&#xff1a;【MangoPapa的CSDN主页】。⚠️ 本文首发于CSDN&#xff0c…

【原创】鲲鹏ARM构架openEuler操作系统安装Oracle 19c

作者:einyboy 【原创】鲲鹏ARM构架openEuler操作系统安装Oracle 19c | 云非云计算机科学、自然科学技术科谱http://www.nclound.com/index.php/2023/09/03/%E3%80%90%E5%8E%9F%E5%88%9B%E3%80%91%E9%B2%B2%E9%B9%8Farm%E6%9E%84%E6%9E%B6openeuler%E6%93%8D%E4%BD%9C%E7%B3%BB%…

进程、操作系统

文章目录 一、冯诺依曼体系&#xff08;Von Neumann Architecture&#xff09;1. 概述2. CPU 二、操作系统&#xff08;Operating System&#xff09;三、进程(process)/任务(task) 一、冯诺依曼体系&#xff08;Von Neumann Architecture&#xff09; 1. 概述 分类 CPU 中央处…

自建音乐播放器之一

这里写自定义目录标题 1.1 官方网站 2. Navidrome 简介2.1 简介2.2 特性 3. 准备工作4. 视频教程5. 界面演示5.1 初始化页5.2 专辑页 前言 之前给大家介绍过 Koel 音频流服务&#xff0c;就是为了解决大家的这个问题&#xff1a;下载下来的音乐&#xff0c;只能在本机欣赏&…

2023年“羊城杯”网络安全大赛 Web方向题解wp 全

团队名称&#xff1a;ZhangSan 序号&#xff1a;11 不得不说今年本科组打的是真激烈&#xff0c;初出茅庐的小后生没见过这场面QAQ~ D0n’t pl4y g4m3!!! 简单记录一下&#xff0c;实际做题踩坑很多&#xff0c;尝试很多。 先扫了个目录&#xff0c;扫出start.sh 内容如下…

网络协议分析-http/https/tcp/udp

文章目录 TCP三次握手/TCP三次挥手TCP三次握手TCP四次挥手完整报文 实例代码HttpSampleClientHttpSampleServerHttpsSampleClientHttpsSampleServerTcpSampleClientTcpSampleServerUdpSampleClientUdpSampleSever 资料 TCP三次握手/TCP三次挥手 “三次握手”的目的是“为了防止…