MYSQL-计算两个时间的时间差和工作日差
文章目录
- MYSQL-计算两个时间的时间差和工作日差
- 1. 创建测试数据
- 2. 计算时间差
- 3. 计算工作日差
MYSQL-计算两个时间的时间差和工作日差
1. 创建测试数据
create table time_table(id int PRIMARY KEY,start_time varchar(50),end_time varchar(50));
insert into time_table values(1,'2020-08-01 00:00:00','2020-09-01 00:00:00');
insert into time_table values(2,'2020-08-01 12:00:00','2020-09-01 13:00:00');
insert into time_table values(3,'2019-08-01 00:00:00','2020-09-01 00:00:00');
select * from time_table;
2. 计算时间差
SELECT DATEDIFF(end_time,start_time) from time_table; -- 相差多少天
SELECT TIMESTAMPDIFF(SECOND,start_time,end_time) from time_table; -- 相差多少秒
SELECT TIMESTAMPDIFF(MINUTE,start_time,end_time) from time_table; -- 相差多少分钟
SELECT TIMESTAMPDIFF(HOUR,start_time,end_time) from time_table; -- 相差多少小时
SELECT TIMESTAMPDIFF(DAY,start_time,end_time) from time_table; -- 相差多少天
SELECT TIMESTAMPDIFF(MONTH,start_time,end_time) from time_table; -- 相差多少个月
SELECT TIMESTAMPDIFF(YEAR,start_time,end_time) from time_table; -- 相差多少年SELECT '一年内第几周',WEEK('2020-08-01'); -- 一年内第几周-30
SELECT '年份',YEAR('2020-08-01'); -- 年份-2020
SELECT '月份',MONTH('2020-08-01'); -- 月份-8
SELECT '日期',DAY('2020-08-01'); -- 日期-1
SELECT '周六',DAYOFWEEK('2020-08-01'); -- 周六-7
SELECT '周日',DAYOFWEEK('2020-08-02'); -- 周日-1
SELECT '周一',DAYOFWEEK('2020-08-03'); -- 周一-2
SELECT '周二',DAYOFWEEK('2020-08-04'); -- 周二-3
SELECT '周三',DAYOFWEEK('2020-08-05'); -- 周三-4
SELECT '周四',DAYOFWEEK('2020-08-06'); -- 周四-5
SELECT '周五',DAYOFWEEK('2020-08-07'); -- 周五-6
3. 计算工作日差
DELIMITER $$
DROP FUNCTION IF EXISTS workdaynum $$
CREATE FUNCTION workdaynum(datefrom DATE,dateto DATE) RETURNS INT(20)NO SQL
BEGINDECLARE days INT DEFAULT 1; -- 声明一个变量并初始化值DECLARE A INT DEFAULT 0;DECLARE B INT DEFAULT 0;IF (datefrom > dateto OR YEAR(datefrom) != YEAR(dateto)) THEN -- datefrom必须小于dateto,且同年RETURN -1;END IF;-- 周:日一二三四五六-- 对应一周的第几天:1234567-- 相差多少天SET days = (CASE-- 同一周计算WHEN WEEK(dateto)-WEEK(datefrom) = 0 THEN DAYOFWEEK(dateto) - DAYOFWEEK(datefrom) + 1-(CASEWHEN (DAYOFWEEK(datefrom) > 1 AND DAYOFWEEK(dateto) < 7) THEN 0 -- 头尾都是工作日,大减小再加1WHEN (DAYOFWEEK(datefrom) = 1 AND DAYOFWEEK(dateto) = 7) THEN 2 -- 头尾都是周末,大减小再加1再减2ELSE 1 -- 其他值为1END)-- 不是同一周,分成三段计算:开始周+中间周+结束周ELSE (WEEK(dateto)-WEEK(datefrom)-1) * 5 -- 中间周,每周5天。 +(CASEWHEN DAYOFWEEK(datefrom) = 1 THEN 5 -- 开始周,开始时间在周日算5天,在周六算0天。WHEN DAYOFWEEK(datefrom) = 7 THEN 0ELSE 7 - DAYOFWEEK(datefrom)END)+(CASEWHEN DAYOFWEEK(dateto) = 1 THEN 0 -- 结束周,结束时间在周日算0天,在周六算5天。WHEN DAYOFWEEK(dateto) = 7 THEN 5ELSE DAYOFWEEK(dateto) - 1END)END);RETURN days;
END $$
DELIMITER ;
测试:SELECT workdaynum('2020-08-01','2020-09-01');
MYSQL-计算两个时间的时间差和工作日差相关推荐
- 使用MySql计算两个日期的时间差函数:TIMESTAMPDIFF
MySql计算两个日期的时间差函数TIMESTAMPDIFF用法 TIMESTAMPDIFF计算两个日期差值,可定义时间单位 DATEDIFF 计算两个日期差,以天为单位 TIMDIFF 时间比较,直 ...
- MySql计算两个日期的时间差
MySql计算两个日期的时间差 MySql计算两个日期的时间差有两种可供选择 第一种.TIMESTAMPDIFF函数 TIMESTAMPDIFF函数,需要传入三个参数,第一个是比较的类型,可以比较FR ...
- go 计算两个时间的时间差
计算与当前时间的时间差: time1 := time.Now() // 假设是我们的某个时间点 time.Since(time1)).Seconds() // 返回time1与当前时间的秒级差值 计算 ...
- MySql计算两个日期的时间差函数
MySql计算两个日期时间的差函数: 第一种:TIMESTAMPDIFF函数,需要传入三个参数,第一个是比较的类型,可以比较FRAC_SECOND.SECOND. MINUTE. HOUR. DAY. ...
- MySql计算两日期时间之间相差的天数,秒数,分钟数,周数,小时数
计算两日期时间之间相差的天数,秒数,分钟数,周数,小时数,这里主要分享的是通过MySql内置的函数 TimeStampDiff() 实现. 函数 TimeStampDiff() 是MySQL本身提供的 ...
- 用JS的Date对象计算两个时间的时间差
无意翻到一本相册,耶,这拍的都是什么,啥时候拍的,恩 2010年的,咋看起来这么老,内心的感情戏泛滥,2010年居然是十年前了--接着就萌生了个计算时间差的方法,下回不能让时间过这么快了 先给他找两个 ...
- php 计算时间差,php 怎么计算两个时间的时间差?
这篇文章主要介绍了PHP简单计算两个时间差的方法,结合具体实例形式分析了php日期与时间的转换及数学运算相关操作技巧,需要的朋友可以参考下. 本文实例讲述了PHP简单计算两个时间差的方法.分享给大家供 ...
- 计算两个时间的时间差(C语言)
首先我们先构思这套题目怎么写,时间差那很简单直接后面时间减去前面不就好了,但是忽略了一点,如果第后面时间分钟是8点10分,前面是7点20分那不就是负数了. 所以要想一个办法,这个办法就是我们先把小时那 ...
- ios 计算两个时间的时间差
NSString *time2 = @"2021-06-11 08:05:00"; // 2.将时间转换为date NSDateFormatter *formatter = [[N ...
最新文章
- 何为OKR?为何使用OKR?
- 树莓派AI视觉云台——3、树莓派系统的启动
- 360要在A股上市 华泰联合证券已签订IPO辅导协议
- luogu 4884 多少个1 (BSGS)
- 深度学习2.0-2.tensorflow的基础操作之创建Tensor及应用场景
- DL神经网络权值初始化
- win7下安装PADS2007
- win7虚拟机_UTM 虚拟机不越狱运行 win7,百分百可以
- 小程序样式写了没有用,或许你就差一行代码
- 2018 Google 开发者大会.md
- python初步判断车牌
- 二值图像轮廓追踪算法
- Sharepreferences
- c语言 自动生成word文件,C#根据Word模版生成Word文件
- PyTorch scatter_ 从懵懂到清晰
- 计算机基础课件第三章ppt,计算机应用基础(windows 7+office 2010)课件 第三章 Windows7操作系统.ppt.pdf-汇文网...
- 程序五杰(吴晓军,鲍岳桥,周志农,刘旭,朱崇君)
- linux常用关机命令shutdown、halt、poweroff、init用法
- linux管道pipe详解
- Git仓库如何优雅的进行备份