MySQL数据库:内置函数

日期函数 

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

函数名称作用描述
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.mzph.cn/news/48566.shtml

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

相关文章

仿mudou高性能高并发服务器

"这个结局是我的期待,我会一直为你祝福。" 项目实现目标: 仿muduo库One Thread One Loop式主从Reacto模型实现高并发服务器。通过实现高并发服务器组件,简洁快速完成搭建一个高性能服务器。并且,通过组件内提供的不同应⽤层协议⽀…

Kafka基本使用

查看Kafka的进程是否在运行 #命令行终端中运行如下命令 ps -ef | grep kafkafind / -iname kafka-server-start.shcd /usr/local/kafka/bin/#启动kafka ./kafka-server-start.sh -daemon /usr/local/kafka/config/server.propertiesKafka默认使用9092端口提供服务&#xf…

九、Linux下,如何在命令行进入文本编辑页面?

1、文本编辑基础 说到文本编辑页面,那就必须提到vi和vim,两者都是Linux系统中,常用的文本编辑器 2、三种工作模式 3、使用方法 (1)在进入Linux系统,在输入vim text.txt之后,会进入文本编辑中&…

Android学习之路(9) Intent

Intent 是一个消息传递对象,您可以用来从其他应用组件请求操作。尽管 Intent 可以通过多种方式促进组件之间的通信,但其基本用例主要包括以下三个: 启动 Activity Activity 表示应用中的一个屏幕。通过将 Intent 传递给 startActivity()&…

简单计算器的实现(含转移表实现)

文章目录 计算器的一般实现使⽤函数指针数组的实现&#xff08;转移表&#xff09; 计算器的一般实现 通过函数的调用&#xff0c;实现加减乘除 # define _CRT_SECURE_NO_WARNINGS#include<stdio.h>int Add(int x, int y) {return x y; }int Sub(int x, int y) {retur…

服务注册中心 Eureka

服务注册中心 Eureka Spring Cloud Eureka 是 Netflix 公司开发的注册发现组件&#xff0c;本身是一个基于 REST 的服务。提供注册与发现&#xff0c;同时还提供了负载均衡、故障转移等能力。 Eureka 有 3 个角色 服务中心&#xff08;Eureka Server&#xff09;&#xff1a;…

vue项目配置git提交规范

vue项目配置git提交规范 一、背景介绍二、husky、lint-staged、commitlint/cli1.husky2.lint-staged3.commitlint/cli 三、具体使用1.安装依赖2.运行初始化脚本3.在package.json中配置lint-staged4.根目录新增 commitlint.config.js 4.提交测试1.提示信息格式错误时2.eslint校验…

线程池的实现v2.0(可伸缩线程池)

目录 前言 可伸缩线程池原理 可伸缩线程池实现 完整程序 前言 本篇可伸缩线程池的实现是在静态线程池上拓展而来&#xff0c;对于静态线程池的实现&#xff0c;请参考&#xff1a; 线程池的实现全过程v1.0版本&#xff08;手把手创建&#xff0c;看完必掌握&#xff01;&…

Java课题笔记~Element UI

Element&#xff1a;是饿了么公司前端开发团队提供的一套基于 Vue 的网站组件库&#xff0c;用于快速构建网页。 Element 提供了很多组件&#xff08;组成网页的部件&#xff09;供我们使用。例如 超链接、按钮、图片、表格等等~ 如下图左边的是我们编写页面看到的按钮&#…

5G与4G的RRC协议之异同

什么是无线资源控制&#xff08;RRC&#xff09;&#xff1f; 我们知道&#xff0c;在移动通信中&#xff0c;无线资源管理是非常重要的一个环节&#xff0c;首先介绍一下什么是无线资源控制&#xff08;RRC&#xff09;。 手机和网络通过无线信道相互通信&#xff0c;彼此交…

【踩坑日记】STM32 USART 串口与 FreeRTOS 冲突

文章目录 问题描述问题出现的环境问题解决过程第一步第二步第三步第四步第五步第六步第七步第八步 后续验证一些思考类似的问题后记 问题描述 笔者使用 FreeRTOS 创建了两个任务&#xff0c;使两颗 LED 以不同频率闪烁&#xff0c;但是在加入串口 USART 部分代码后&#xff0c…

Mysql 开窗函数(窗口函数)

文章目录 全部数据示例1&#xff08;说明&#xff09;开窗函数可以比groupby多查出条件列外的字段&#xff0c;开窗函数主要是为了跟聚合函数一起使用&#xff0c;达到分组统计效果&#xff0c;并且开窗函数的结果集基本都是跟总行数一样示例2示例3示例4错误示例1错误示例2错误…

Flink源码之Checkpoint执行流程

Checkpoint完整流程如上图所示&#xff1a; JobMaster的CheckpointCoordinator向所有SourceTask发送RPC触发一次CheckPointSourceTask向下游广播CheckpointBarrierSouceTask完成状态快照后向JobMaster发送快照结果非SouceTask在Barrier对齐后完成状态快照向JobMaster发送快照结…

LION AI 大模型落地,首搭星纪元 ES

自新能源汽车蓬勃发展以来&#xff0c;随着潮流不断进步和变革的“四大件”有着明显变化。其中有&#xff1a;平台、智能驾驶、配置、以及车机。方方面面都有着不同程度的革新。 而车机方面&#xff0c;从以前老旧的媒体机、 CD 机发展至如今具有拓展性、开放性、智能化的车机…

[保研/考研机试] KY207 二叉排序树 清华大学复试上机题 C++实现

题目链接&#xff1a; 二叉排序树_牛客题霸_牛客网二叉排序树&#xff0c;也称为二叉查找树。可以是一颗空树&#xff0c;也可以是一颗具有如下特性的非空二叉树&#xff1a; 1。题目来自【牛客题霸】https://www.nowcoder.com/share/jump/437195121692721757794 描述&#x…

滑动窗口介绍

1.基本概念 利用单调性&#xff0c;使用同向双指针&#xff0c;两个指针之间形成一个窗口 子串与子数组都是连续的一段子序列时不连续的 2.为什么可以用滑动窗口&#xff1f; 暴力解决时发现两个指针不需要回退&#xff08;没必要回退&#xff0c;一定不会符合结果&#xf…

【网络】数据链路层——MAC帧协议 | ARP协议

&#x1f431;作者&#xff1a;一只大喵咪1201 &#x1f431;专栏&#xff1a;《网络》 &#x1f525;格言&#xff1a;你只管努力&#xff0c;剩下的交给时间&#xff01; 来到数据链路层后&#xff0c;完整的数据被叫做数据帧&#xff0c;习惯上称之为MAC帧。 MAC帧协议 | A…

jenkins全量迁移

文章目录 1、目的2、迁移1&#xff09;查看jenkins的主目录2&#xff09;登录要迁出的服务器打包3&#xff09;找到对应的war包4&#xff09;登录对应迁入服务&#xff0c;上传war包和打包的jenkins数据等5&#xff09;在新的服务器解压迁入的数据等&#xff0c;并查看端口是否…

# Lua与C++交互(二)———— 交互

C 调用lua 基础调用 再来温习一下 myName “beauty girl” C想要获取myName的值&#xff0c;根据规则&#xff0c;它需要把myName压入栈中&#xff0c;这样lua就能看到&#xff1b;lua从堆栈中获取myName的值&#xff0c;此时栈顶为空&#xff1b;lua拿着myName去全局表中查…

【Jenkins】rpm方式安装Jenkins(2.401,jdk版本17)

目录 【Jenkins】rpm方式安装Jenkins 1、主机初始化 2、软件要求 RPM包安装的内容 配置文件说明 3、web操作 【Jenkins】rpm方式安装Jenkins 1、主机初始化 [rootlocalhost ~]# hostname jenkins[rootlocalhost ~]# bash[rootjenkins ~]# systemctl stop firewalld[roo…