文章目录

  • 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-计算两个时间的时间差和工作日差相关推荐

  1. 使用MySql计算两个日期的时间差函数:TIMESTAMPDIFF

    MySql计算两个日期的时间差函数TIMESTAMPDIFF用法 TIMESTAMPDIFF计算两个日期差值,可定义时间单位 DATEDIFF 计算两个日期差,以天为单位 TIMDIFF 时间比较,直 ...

  2. MySql计算两个日期的时间差

    MySql计算两个日期的时间差 MySql计算两个日期的时间差有两种可供选择 第一种.TIMESTAMPDIFF函数 TIMESTAMPDIFF函数,需要传入三个参数,第一个是比较的类型,可以比较FR ...

  3. go 计算两个时间的时间差

    计算与当前时间的时间差: time1 := time.Now() // 假设是我们的某个时间点 time.Since(time1)).Seconds() // 返回time1与当前时间的秒级差值 计算 ...

  4. MySql计算两个日期的时间差函数

    MySql计算两个日期时间的差函数: 第一种:TIMESTAMPDIFF函数,需要传入三个参数,第一个是比较的类型,可以比较FRAC_SECOND.SECOND. MINUTE. HOUR. DAY. ...

  5. MySql计算两日期时间之间相差的天数,秒数,分钟数,周数,小时数

    计算两日期时间之间相差的天数,秒数,分钟数,周数,小时数,这里主要分享的是通过MySql内置的函数 TimeStampDiff() 实现. 函数 TimeStampDiff() 是MySQL本身提供的 ...

  6. 用JS的Date对象计算两个时间的时间差

    无意翻到一本相册,耶,这拍的都是什么,啥时候拍的,恩 2010年的,咋看起来这么老,内心的感情戏泛滥,2010年居然是十年前了--接着就萌生了个计算时间差的方法,下回不能让时间过这么快了 先给他找两个 ...

  7. php 计算时间差,php 怎么计算两个时间的时间差?

    这篇文章主要介绍了PHP简单计算两个时间差的方法,结合具体实例形式分析了php日期与时间的转换及数学运算相关操作技巧,需要的朋友可以参考下. 本文实例讲述了PHP简单计算两个时间差的方法.分享给大家供 ...

  8. 计算两个时间的时间差(C语言)

    首先我们先构思这套题目怎么写,时间差那很简单直接后面时间减去前面不就好了,但是忽略了一点,如果第后面时间分钟是8点10分,前面是7点20分那不就是负数了. 所以要想一个办法,这个办法就是我们先把小时那 ...

  9. ios 计算两个时间的时间差

    NSString *time2 = @"2021-06-11 08:05:00"; // 2.将时间转换为date NSDateFormatter *formatter = [[N ...

最新文章

  1. 何为OKR?为何使用OKR?
  2. 树莓派AI视觉云台——3、树莓派系统的启动
  3. 360要在A股上市 华泰联合证券已签订IPO辅导协议
  4. luogu 4884 多少个1 (BSGS)
  5. 深度学习2.0-2.tensorflow的基础操作之创建Tensor及应用场景
  6. DL神经网络权值初始化
  7. win7下安装PADS2007
  8. win7虚拟机_UTM 虚拟机不越狱运行 win7,百分百可以
  9. 小程序样式写了没有用,或许你就差一行代码
  10. 2018 Google 开发者大会.md
  11. python初步判断车牌
  12. 二值图像轮廓追踪算法
  13. Sharepreferences
  14. c语言 自动生成word文件,C#根据Word模版生成Word文件
  15. PyTorch scatter_ 从懵懂到清晰
  16. 计算机基础课件第三章ppt,计算机应用基础(windows 7+office 2010)课件 第三章 Windows7操作系统.ppt.pdf-汇文网...
  17. 程序五杰(吴晓军,鲍岳桥,周志农,刘旭,朱崇君)
  18. linux常用关机命令shutdown、halt、poweroff、init用法
  19. linux管道pipe详解
  20. Git仓库如何优雅的进行备份

热门文章

  1. 全志A64触摸屏驱动调试
  2. 鼠标悬停帮助图标显示文字提示框代码
  3. 涨价、盈利、IPO?共享充电宝没你想象得好过!
  4. Ubuntu离线安装网卡驱动
  5. 小米平板4软件提取包_小米三大法宝:软件、硬件和服务;以及他的4条成功经验|小米手机|智能手机|手机...
  6. Python项目-----外星人大战
  7. 优维EasyOps,打造新一代运维新方式
  8. arcgis渔网的使用
  9. 序列的运算、操作、函数/方法
  10. 数据结构实验之队列一:排队买饭