Mysql 常用日期处理函数
创始人
2024-05-27 06:32:37
0

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 运行截图

在这里插入图片描述

相关内容

热门资讯

【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
AsusVivobook无法开... 首先,我们可以尝试重置BIOS(Basic Input/Output System)来解决这个问题。...
ASM贪吃蛇游戏-解决错误的问... 要解决ASM贪吃蛇游戏中的错误问题,你可以按照以下步骤进行:首先,确定错误的具体表现和问题所在。在贪...
月入8000+的steam搬砖... 大家好,我是阿阳 今天要给大家介绍的是 steam 游戏搬砖项目,目前...