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;
-- 计算d1-d2之间间隔的天数,d1,d2也可以是字符串
DATEDIFF(d1,d2)
-- 日期处理函数 DATEDIFF(d1,d2) 计算d1-d2之间间隔的天数
SELECT DATEDIFF('2022-02-02','2022-02-05')
FROM dual
/*以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)
-- 查出员工姓名、入职日期(只查你年月,像2020-02这种形式)
SELECT ename,date_format(hiredate,'%Y-%m')
FROM emp
/*
一般是用于求多少天之内,
expr是时间间隔(整数),expr为正数时日期往后移(过去),expr为负数时日期往前移动(未来)
type是日期类型,可以是year(年)、month(月)、day(日)
sub是subtract的缩写 表示减去
*/
DATE_SUB(date,INTERVAL expr type)
SELECT date_sub(hiredate,interval 2 day) day,hiredate
FROM emp
SELECT date_sub(hiredate,interval -2 day) day,hiredate
FROM emp
NOW()
-- dual只是临时表罢了
SELECT NOW()
FROM dual;
--n可以是interval 2 day这种,和date_sub的用法一致
ADDDATE(d,n)
-- 查找出所有员工的日志日期早二天的日期
SELECT hiredate,ADDDATE(hiredate,interval 2 day)
FROM emp
-- 返回给给定日期的那一月份的最后一天
LAST_DAY(d)
-- 查找员工入职日期月份的最后一天
SELECT hiredate,LAST_DAY(hiredate) last
FROM emp;
-- 返回日期d是第几季节 取值范围为[1,4]
QUARTER(d)
-- 查找员工入职月份是在第几季度
SELECT hiredate,QUARTER(hiredate) '季度'
FROM emp;
上一篇:Flutter 数据传递
下一篇:Nacos配置文件详解