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

Mysql 常用日期处理函数

Mysql 常用日期处理函数

1 建表语句

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for emp
-- ----------------------------
DROP TABLE IF EXISTS `emp`;
CREATE TABLE `emp`  (`EMPNO` int(4) NOT NULL,`ENAME` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`JOB` varchar(9) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`MGR` int(4) NULL DEFAULT NULL,`HIREDATE` date NULL DEFAULT NULL,`SAL` double(7, 2) NULL DEFAULT NULL,`COMM` double(7, 2) NULL DEFAULT NULL,`DEPTNO` int(2) NULL DEFAULT NULL,PRIMARY KEY (`EMPNO`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;-- ----------------------------
-- Records of emp
-- ----------------------------
INSERT INTO `emp` VALUES (7369, 'SMITH', 'CLERK', 7902, '1980-12-17', 800.00, NULL, 20);
INSERT INTO `emp` VALUES (7499, 'ALLEN', 'SALESMAN', 7698, '1981-02-20', 1600.00, 300.00, 30);
INSERT INTO `emp` VALUES (7521, 'WARD', 'SALESMAN', 7698, '1981-02-22', 1250.00, 500.00, 30);
INSERT INTO `emp` VALUES (7566, 'JONES', 'MANAGER', 7839, '1981-04-02', 2975.00, NULL, 20);
INSERT INTO `emp` VALUES (7654, 'MARTIN', 'SALESMAN', 7698, '1981-09-28', 1250.00, 1400.00, 30);
INSERT INTO `emp` VALUES (7698, 'BLAKE', 'MANAGER', 7839, '1981-05-01', 2850.00, NULL, 30);
INSERT INTO `emp` VALUES (7782, 'CLARK', 'MANAGER', 7839, '1981-06-09', 2450.00, NULL, 10);
INSERT INTO `emp` VALUES (7788, 'SCOTT', 'ANALYST', 7566, '1987-04-19', 3000.00, NULL, 20);
INSERT INTO `emp` VALUES (7839, 'KING', 'PRESIDENT', NULL, '1981-11-17', 5000.00, NULL, 10);
INSERT INTO `emp` VALUES (7844, 'TURNER', 'SALESMAN', 7698, '1981-09-08', 1500.00, 0.00, 30);
INSERT INTO `emp` VALUES (7876, 'ADAMS', 'CLERK', 7788, '1987-05-23', 1100.00, NULL, 20);
INSERT INTO `emp` VALUES (7900, 'JAMES', 'CLERK', 7698, '1981-12-03', 950.00, NULL, 30);
INSERT INTO `emp` VALUES (7902, 'FORD', 'ANALYST', 7566, '1981-12-03', 3000.00, NULL, 20);
INSERT INTO `emp` VALUES (7934, 'MILLER', 'CLERK', 7782, '1982-01-23', 1300.00, NULL, 10);SET FOREIGN_KEY_CHECKS = 1;

2.计算两个日期之间的天数

2.1 语法

-- 计算d1-d2之间间隔的天数,d1,d2也可以是字符串
DATEDIFF(d1,d2) 

2.2 示例sql语句

-- 日期处理函数  DATEDIFF(d1,d2) 计算d1-d2之间间隔的天数
SELECT DATEDIFF('2022-02-02','2022-02-05')
FROM dual

2.3 运行截图

在这里插入图片描述

3 以不同的格式显示日期/时间数据

3.1 语法

/*以f的格式显示d对应的日期
其中f中最为常见的格式如下
%Y 四位数的年  
%m 月份(1,2,3...) 
%d 天数(1,2.3...31)
%H 24小时制
%i  分钟,数字形式 (00..59)
%s 秒
%M 月份(March这种的)
*/
DATE_FORMAT(d,f)

3.2 示例sql语句

-- 查出员工姓名、入职日期(只查你年月,像2020-02这种形式)
SELECT ename,date_format(hiredate,'%Y-%m')
FROM emp

3.3 运行截图

在这里插入图片描述

4 从日期中变更指定的时间间隔

4.1 语法

/*
一般是用于求多少天之内,
expr是时间间隔(整数),expr为正数时日期往后移(过去),expr为负数时日期往前移动(未来)
type是日期类型,可以是year(年)、month(月)、day(日)
sub是subtract的缩写 表示减去
*/
DATE_SUB(date,INTERVAL expr type)

4.2 示例sql语句

4.2.1 当为expr为正数,返回过去日期

SELECT date_sub(hiredate,interval 2 day) day,hiredate
FROM emp

4.2.2 当为expr为负数,返回未来日期

SELECT date_sub(hiredate,interval -2 day) day,hiredate
FROM emp

4.3 运行截图

4.3.1 当为expr为正数

在这里插入图片描述

4.3.2 当为expr为负数时

在这里插入图片描述

5 返回当前日期和时间

5.1 语法

NOW()

5.2 示例sql语句

-- dual只是临时表罢了
SELECT NOW()
FROM dual;

5.3 运行截图

在这里插入图片描述

6 计算起始日期 d 变更n天后的日期

6.1 语法

--n可以是interval 2 day这种,和date_sub的用法一致
ADDDATE(d,n)

6.2 示例sql语句

-- 查找出所有员工的日志日期早二天的日期
SELECT hiredate,ADDDATE(hiredate,interval 2 day)
FROM emp

6.3 运行截图

在这里插入图片描述

7 返回指定日期那一月份的最后一天

7.1 语法

-- 返回给给定日期的那一月份的最后一天
LAST_DAY(d)

7.2 示例sql语句

-- 查找员工入职日期月份的最后一天
SELECT hiredate,LAST_DAY(hiredate) last
FROM emp;

7.3 运行截图

在这里插入图片描述

8 返回日期是第几季度

8.1 语法

-- 返回日期d是第几季节 取值范围为[1,4]
QUARTER(d)

8.2 示例sql语句

-- 查找员工入职月份是在第几季度
SELECT hiredate,QUARTER(hiredate) '季度'
FROM emp;

8.3 运行截图

在这里插入图片描述

http://www.lryc.cn/news/23514.html

相关文章:

  • Pod中容器的健康检查
  • 信贷系统学习总结(5)—— 简单的风控示例(含代码)
  • Java知识复习(四)多线程、并发编程
  • 一个9个月测试经验的人,居然在面试时跟我要18K,我都被他吓到了····
  • zigbee与WIFI同频干扰问题
  • git拉取指定的单个或多个文件或文件夹
  • 不是,到底有多少种图片懒加载方式?
  • CAD坐标有哪些输入方式?来看看这些CAD坐标输入方式!
  • 铰链、弹簧,特殊的物理关节
  • Android Studio相关记录
  • Linux 基础介绍-基础命令
  • Linux 进程:程序地址空间 与 虚拟内存
  • python 密码学编程
  • 【C++ | bug | 运算符重载】定义矩阵(模板)类时,使用 “友元函数” 进行 * 运算符重载时编译报错
  • 数学小课堂:无穷小(以动态的眼光看待世界,理解无限的世界)
  • leetcode 427. Construct Quad Tree(构建四叉树)
  • Spring Boot 3.0系列【2】部署篇之使用GraalVM构建原生镜像
  • 复习知识点十之方法的重载
  • 火爆全网的ChatGPT 和AI 可以为项目经理做什么?
  • 前端面试题 —— HTML
  • 同为(TOWE)电源线让家用电器随心放置
  • 2023上半年数学建模竞赛汇总(报名时间、比赛时间、难易程度、含金量、竞赛官网)
  • RK3568平台开发系列讲解(驱动基础篇)SMP(Symmetrical Multi-Processing)
  • HIVE --- zeppelin安装
  • 数据分析中的变量解释
  • django-博客(一)
  • Shell高级——Linux中的文件描述符
  • 洗地机哪个品牌最好用?家用洗地机十大名牌
  • java多线程(十)线程休眠
  • Leetcode20. 有效的括号