MySQL数据库:内置函数

news2024/12/26 3:23:39

日期函数 

规定:日期:年月日       时间:时分秒

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

当前时间日期

函数使用演示

获得年月日:

mysql> select current_date;
+--------------+
| current_date |
+--------------+
| 2023-08-16   |
+--------------+
1 row in set (0.00 sec)

获得时分秒:

mysql> select current_time;
+--------------+
| current_time |
+--------------+
| 23:37:33     |
+--------------+
1 row in set (0.00 sec)

获得时间戳:

mysql> select current_timestamp;
+---------------------+
| current_timestamp   |
+---------------------+
| 2023-08-16 23:38:11 |
+---------------------+
1 row in set (0.00 sec)

在日期的基础上加日期:

mysql> select date_add(now(),interval 10 day);  ---加10天
+---------------------------------+
| date_add(now(),interval 10 day) |
+---------------------------------+
| 2023-08-26 23:39:04             |
+---------------------------------+
1 row in set (0.00 sec)

mysql> select now();-----当前的日期天数
+---------------------+
| now()               |
+---------------------+
| 2023-08-16 23:39:11 |
+---------------------+
1 row in set (0.00 sec)

在日期的基础上减去时间:

mysql> select now();-----原本的日期
+---------------------+
| now()               |
+---------------------+
| 2023-08-16 23:40:08 |
+---------------------+
1 row in set (0.00 sec)

mysql> select date_sub(now(),interval 5 day);----5天前
+--------------------------------+
| date_sub(now(),interval 5 day) |
+--------------------------------+
| 2023-08-11 23:40:26            |
+--------------------------------+
1 row in set (0.00 sec)

计算两个日期之间相差多少天:

mysql> select datediff('2019-12-31','2023-8-16');
+------------------------------------+
| datediff('2019-12-31','2023-8-16') |
+------------------------------------+
|                              -1324 |
+------------------------------------+
1 row in set (0.00 sec)

mysql> select datediff('2023-8-16','2019-12-31');
+------------------------------------+
| datediff('2023-8-16','2019-12-31') |
+------------------------------------+
|                               1324 |
+------------------------------------+
1 row in set (0.00 sec)

案例

1.创建一张表,记录生日,添加当前日期:
 

mysql> create table tmp(
    -> id int primary key auto_increment,
    -> birthday date
    -> );
Query OK, 0 rows affected (0.03 sec)

mysql> insert into tmp(birthday) values(current_date());
Query OK, 1 row affected (0.01 sec)

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

2.创建一个留言表,插入相关数据。①显示所有留言信息,发布日期只显示日期,不用显示时间②查询在2分钟内发布的帖子。

  • 建表
mysql> create table msg(
    -> id int primary key auto_increment,
    -> content varchar(30) not null,
    -> sendtime datetime);
Query OK, 0 rows affected (0.03 sec)
  • 插入数据
mysql> insert into msg(content,sendtime) values('中午吃什么?',now());
Query OK, 1 row affected (0.00 sec)

mysql> insert into msg(content,sendtime) values('我想吃螺蛳粉,可以吗',now());
Query OK, 1 row affected (0.00 sec)

mysql> select * from msg;
+----+--------------------------------+---------------------+
| id | content                        | sendtime            |
+----+--------------------------------+---------------------+
|  1 | 中午吃什么?                   | 2023-08-16 23:51:57 |
|  2 | 我想吃螺蛳粉,可以吗           | 2023-08-16 23:52:09 |
+----+--------------------------------+---------------------+
2 rows in set (0.00 sec)
  • 显示所有留言信息,发布日期只显示日期,不用显示时间
     
mysql> select content,date(sendtime) from msg;
+--------------------------------+----------------+
| content                        | date(sendtime) |
+--------------------------------+----------------+
| 中午吃什么?                   | 2023-08-16     |
| 我想吃螺蛳粉,可以吗           | 2023-08-16     |
+--------------------------------+----------------+
2 rows in set (0.00 sec)
  • 请查询在2分钟内发布的帖子
     
mysql> insert into msg(content,sendtime) values('项目做了吗?',now());
Query OK, 1 row affected (0.01 sec)

mysql> select * from msg where date_add(sendtime,interval 2 minute) > now();
+----+--------------------+---------------------+
| id | content            | sendtime            |
+----+--------------------+---------------------+
|  3 | 项目做了吗?       | 2023-08-16 23:56:26 |
+----+--------------------+---------------------+
1 row in set (0.00 sec)

字符串函数

案例:

  • 获取stu表的 name的字符集----使用charset字符串函数

stu表: 

mysql> desc stu;
+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id       | int(11)     | NO   | PRI | NULL    |       |
| name     | varchar(30) | NO   |     | NULL    |       |
| class_id | int(11)     | YES  | MUL | NULL    |       |
+----------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

mysql> select charset(name) from stu;  ----获取字符串的字符集
+---------------+
| charset(name) |
+---------------+
| utf8          |
| utf8          |
+---------------+
2 rows in set (0.00 sec)
  • 要求显示exam_result表中的信息,显示格式:“XXX的语文是XXX分,数学XXX分,英语XXX分”----使用concat字符串函数
     
mysql> desc exam_result
    -> ;
+---------+------------------+------+-----+---------+----------------+
| Field   | Type             | Null | Key | Default | Extra          |
+---------+------------------+------+-----+---------+----------------+
| id      | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| name    | varchar(20)      | NO   |     | NULL    |                |
| chinese | float            | YES  |     | 0       |                |
| math    | float            | YES  |     | 0       |                |
| english | float            | YES  |     | 0       |                |
| qq      | char(10)         | YES  |     | NULL    |                |
+---------+------------------+------+-----+---------+----------------+
6 rows in set (0.00 sec)

mysql> select concat(name,'的语文是',chinese,'分, 数学是',math,'分') as '分数' from exam_result;
+----------------------------------------------+
| 分数                                         |
+----------------------------------------------+
| 唐三藏的语文是134分, 数学是98分              |
| 猪悟能的语文是176分, 数学是98分              |
| 曹孟德的语文是140分, 数学是90分              |
| 刘玄德的语文是110分, 数学是115分             |
| 孙权的语文是140分, 数学是73分                |
| 宋公明的语文是150分, 数学是95分              |
+----------------------------------------------+
6 rows in set (0.00 sec)
  • 求exam_result中学生姓名占用的字节数---使用length字符串函数

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

mysql> select length(name),name from exam_result;
+--------------+-----------+
| length(name) | name      |
+--------------+-----------+
|            9 | 唐三藏    |
|            9 | 猪悟能    |
|            9 | 曹孟德    |
|            9 | 刘玄德    |
|            6 | 孙权      |
|            9 | 宋公明    |
+--------------+-----------+
6 rows in set (0.00 sec)
  • 以首字母小写的方式显示所有同学的姓名
select concat(lcase(substring(name,1,1)),substring(name,2)) from exam_result;

数学函数

案例:

  • 绝对值
mysql> select abs(-100.2);
+-------------+
| abs(-100.2) |
+-------------+
|       100.2 |
+-------------+
1 row in set (0.00 sec)
  • 向上取整
mysql> select ceiling(23.04);
+----------------+
| ceiling(23.04) |
+----------------+
|             24 |
+----------------+
1 row in set (0.00 sec)
  • 向下取整
mysql> select floor(23.7);
+-------------+
| floor(23.7) |
+-------------+
|          23 |
+-------------+
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.3399681042320729 |
+--------------------+
1 row in set (0.00 sec)

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

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

其它函数

  • user() 查询当前用户
     
select user();
  • md5(str)对一个字符串进行md5摘要,摘要后得到一个32位字符串
mysql> select md5('admin');
+----------------------------------+
| md5('admin')                     |
+----------------------------------+
| 21232f297a57a5a743894a0e4a801fc3 |
+----------------------------------+
1 row in set (0.00 sec)
  • database()显示当前正在使用的数据库
mysql> select database();
+------------+
| database() |
+------------+
| my_test    |
+------------+
1 row in set (0.00 sec)
  • password()函数,MySQL数据库使用该函数对用户加密
mysql> select password('123456');
+-------------------------------------------+
| password('123456')                        |
+-------------------------------------------+
| *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
+-------------------------------------------+
1 row in set, 1 warning (0.02 sec)
  • ifnull(val1, val2) 如果val1为null,返回val2,否则返回val1的值
mysql> select ifnull('abc','123');
+---------------------+
| ifnull('abc','123') |
+---------------------+
| abc                 |
+---------------------+
1 row in set (0.00 sec)

mysql> select ifnull(null,'123');
+--------------------+
| ifnull(null,'123') |
+--------------------+
| 123                |
+--------------------+
1 row in set (0.00 sec)

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

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

相关文章

畜牧兽医虚拟仿真|病禽解剖VR模拟操作演练系统

在生物学课程中,动物解剖是一个重要的组成部分,它能够帮助学生了解动物的生理结构、功能和生活习性,从而更好地认识和保护自然界的生物多样性。然而,传统的动物解剖教学方法往往局限于课堂教学和实验室实践,学生很难真…

基于MATLAB开发AUTOSAR软件应用层Code mapping专题-part 4 Data store标签页介绍

这篇文章我们继续讲解code-mapping的Data stores页,这个页的内容对应的SIMULINK中的模块是Data store memory。 我们首先在模型中创建一个Data store memory模块,如图: Data store memory模块的作用相当于一个全局变量,我们可以在模型的功能逻辑里将一个信号存进去,在另…

【计算机网络篇】TCP协议

✅作者简介:大家好,我是小杨 📃个人主页:「小杨」的csdn博客 🐳希望大家多多支持🥰一起进步呀! TCP协议 1,TCP 简介 TCP(Transmission Control Protocol)是…

Linux系统使用service设置程序自启动

Linux系统使用service设置程序自启动 整体描述前期准备1. 生成pid文件 具体方法1. 脚本编写1.1 start.sh脚本1.2 shutdown.sh脚本1.3 restart.sh脚本 2. 设置service2.1 service文件2.2 设置自启动2.3 查看设置结果 整体描述 在linux系统里,设置程序自启动是基本操…

基于Vue3.0的优秀低代码项目

在众多开发技术中,Vue组件化开发技术以其卓越的灵活性和高效性备受瞩目。借助Vue3.0的强大功能和简洁易用的语法,你将能够轻松打造出最令人瞩目的低代码项目。 低代码开发正成为当前企业提升运营效率、降低开发成本的首选方案。相较于传统开发模式&#…

基于Singularity 安装 AmpliconSuite-pipeline

基于Singularity 安装 AmpliconSuite-pipeline 按照AmpliconSuite-pipeline官网的Singularity安装方法遇到不少问题,好在都一一解决了,写个文档记录一下我基于Singularity 安装 AmpliconSuite-pipeline的过程。 step1 获取 Singularity镜像 镜像地址&…

如何截掉图片中的一部分?

如何截掉图片中的一部分?在社交媒体的热潮下,我们常常需要将自己生活中的照片或者美景图片分享到互联网或者自己的朋友圈中。然而,有时候我们会发现照片中存在一些不需要的元素,这可能会降低照片的美观程度。针对这种情况&#xf…

分布式核心知识以及常见微服务框架

分布式中的远程调用 在微服务架构中,通常存在多个服务之间的远程调用的需求。远程调用通常包含两个部分:序列化和通信协议。常见的序列化协议包括json、xml、 hession、 protobuf、thrift、text、 bytes等,目前主流的远程调用技术有基于HTTP…

C语言刷题训练DAY.10

1.空心正方形图案 解题思路&#xff1a; 这里我们只把四条边的内容打印成*&#xff0c;其他内容打印成空格即可。 解题代码&#xff1a; #include <stdio.h> int main() {int n 0;while (scanf("%d", &n) ! EOF){int i 0;for (i 0; i < n; i) //外…

Stream流报错Duplicate key

目录 1、场景2、问题3、解决办法4、完整代码 1、场景 有一个客户列表&#xff0c;每个item里有客户id、name、客户开的公司。 现在根据客户id分组&#xff0c;以客户id为key&#xff0c;把id相同的放到value里&#xff0c;构建一个Map。 这样可以快速根据id&#xff0c;获取相…

LLM赋能产业数智化业务系统升级的思考

1概述 2022年是人工智能的一个分水岭&#xff0c;ChatGPT&#xff0c;DALL E[ DALL E&#xff1a;是一款可以根据文本描述创建图像的AI工具。]和Lensa[ Lensa&#xff1a;是一款AI美图软件。]等几个面向消费者的应用程序发布了&#xff0c;它们的共同主题是使用生成式人工智能&…

【日常积累】Cookie和Session的区别

背景 会话&#xff08;Session&#xff09;跟踪是Web程序中常用的技术&#xff0c;用来跟踪用户的整个会话。常用的会话跟踪技术是Cookie与Session。Cookie通过在客户端记录信息确定用户身份&#xff0c;Session通过在服务器端记录信息确定用户身份。 本章将分享一些关于Cooki…

【高危】MarkText<=0.17.1 存在DOM型XSS漏洞 (CVE-2023-2318)

漏洞描述 MarkText 是热门的开源Markdown编辑器&#xff0c;覆盖Windows/Linux/MacOS平台。 MarkText 0.17.1及之前版本中的 pasteCtrl 类未对用户可控的 HTML 内容进行过滤&#xff0c;当用户将攻击者可控的 HTML 代码粘贴至 MarkText 编辑器中时&#xff0c;攻击者可利用DO…

鸿蒙应用开发之基础组件

一、组件简介 组件&#xff08;Component&#xff09;是界面搭建与显示的最小单位&#xff0c;HarmonyOS ArkUI声明式开发范式为开发者提供了丰富多样的UI组件&#xff0c;我们可以使用这些组件轻松的编写出更加丰富、漂亮的界面。 组件根据功能可以分为以下五大类&#xff1…

Leetcode---359周赛

题目列表 2828. 判别首字母缩略词 2829. k-avoiding 数组的最小总和 2830. 销售利润最大化 2831. 找出最长等值子数组 一、判断首字母缩略词 纯模拟&#xff0c;代码如下 class Solution { public:bool isAcronym(vector<string>& words, string s) {string tmp…

如何将pdf文件转换成word文档?

如何将pdf文件转换成word文档&#xff1f;PDF文档是我们日常办公中最为常用的电子文档格式的文件&#xff0c;也是在会议、教育培训以及商业营销中经常使用的文档格式。所以说PDF文档的功能较强&#xff0c;且应用场景较多。但是也有例外的时候&#xff0c;比如我们需要将PDF文…

vue项目中使用ts的枚举类型

vue项目中要使用ts的枚举类型需要为script标签的lang属性添加ts属性值 <script lang"ts" setup> </script > 声明枚举类型&#xff1a; //语法 /* enum 枚举名称 {可能的值 }*/ enum scenic_status {"正常" 1,"审核中","暂停…

Prometheus 监控系统---你值得拥有

目录 一&#xff1a;Prometheus 1、Prometheus 概述 2、应用场景 3、Prometheus 的特点 4、Prometheus 的生态组件 &#xff08;1&#xff09;Prometheus server&#xff1a;服务核心组件 &#xff08;2&#xff09;Client Library: 客户端库 &#xff08;3&#xff0…

c语言(12)

第一题 容易下意识认为这个判断是ASCII码值在0到9之间&#xff01; 第二题 第三题 第四题 第五题 第六题 用递归很容易就解决了 第七题

合规试制“精准狙击”秘籍——趣味浅析16949五大质量管理工具

在极其重视产品质量的汽车行业&#xff0c;如何制造出一件合格的产品进而获得主机厂的青睐&#xff0c;就像狙击手射出的子弹是否能命中目标&#xff0c;“百发百中”是每一个汽配供应商的最终梦想。 目前&#xff0c;汽配零部件企业必须通过质量管理体系的认证&#xff0c;才有…