婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > MySQL去除重疊時間求時間差和的實現

MySQL去除重疊時間求時間差和的實現

熱門標簽:話務外呼系統怎么樣 智能外呼系統復位 大眾點評星級酒店地圖標注 拉卡拉外呼系統 臨清電話機器人 400電話可以辦理嗎 外東北地圖標注 高清地圖標注道路 云南電商智能外呼系統價格

         我個人并不推薦在實際開發中使用存儲過程,充滿了各種的不方便,之所以寫這東西,全在于學習,如果有高手看到我的內容有問題,可以隨時指出或向我開炮。 

需求:

        在生產中常常出現計算兩個時間差的業務,比如總宕機時間、總開通會員時間等等。。。但是這些時間往往不是連貫的,斷斷續續,甚至可能會出現重疊的情況。無法直接求出時間差。

例如:

 開車:

        一開始,我想的是用單條SQL實現,例如:↓

SELECT TIMESTAMPDIFF(MINUTE, '2021-08-19 14:30:00', '2021-08-19 15:00:00') FROM DUAL;

 我發現,數據庫數據千千萬,不可能這樣,也不可能用UNION這種東西去拼接,數據很多,就一定會有循環,所以,在不使用Java語言的情況下,我選擇嘗試用存儲過程來解決以下這個問題。

思路:

         首先,一次進入循環的數據不會進行計算,防止后邊的數據和它有重疊,

        從第二條數據開始,就要判斷開始時間是否和上一個數據重疊,如果重疊,則校驗結束時間是否也重疊,如果重疊我就啥也不干,不重疊,則把這個值賦給上一次的數據的結束時間。

        如果開始時間不再范圍內,那么需要判斷開始時間是在上一次時間的之前還是之后

        如果這個范圍之前,把這個值賦給上一次的數據的開始時間。

        在這個范圍之后,計算并賦值

        最后一次循環也要計算并賦值

實現:        

首先創建表,模擬數據

CREATE TABLE test01 (
  id int(32) unsigned NOT NULL AUTO_INCREMENT,
  start_time datetime NOT NULL,
  end_time datetime NOT NULL,
  PRIMARY KEY (`id`)
) 
 
INSERT INTO test01(id, start_time, end_time) VALUES (1, '2021-08-18 16:27:51', '2021-08-18 17:27:59');
INSERT INTO test01(id, start_time, end_time) VALUES (2, '2021-08-18 17:20:26', '2021-08-18 20:10:37');
INSERT INTO test01(id, start_time, end_time) VALUES (3, '2021-08-18 22:05:57', '2021-08-18 23:55:20');

 

 創建存儲過程:

CREATE PROCEDURE sumTime()
BEGIN
    -- 定義變量 
 
    -- 是否首次
    DECLARE is_old int(1) DEFAULT 0;
 
    -- 上一次數據
	DECLARE old_start_time datetime;
	DECLARE old_end_time datetime;
 
	-- 本次數據
	DECLARE start_time datetime;
	DECLARE end_time datetime;
 
	-- 返回結果
	DECLARE num int(32) DEFAULT 0;
 
	-- 循環結束開關
	DECLARE done int DEFAULT 0;
 
	-- 創建游標(查詢數據庫數據)
	DECLARE list CURSOR FOR SELECT a.start_time, a.end_time FROM test01 a;
 
    -- 定義最后一次循環時設置 循環結束開關 為 1
	DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done=1;
 
	-- 開啟游標
	OPEN list;
 
		-- 開啟循環
		posLoop:LOOP
			-- 取值 將當前循環的值取出 賦值給當前數據變量
			FETCH list INTO start_time,end_time;
			-- 判斷是否首次
			if (is_old = 0) THEN 
 
				SET is_old = 1;
				SET old_start_time = start_time;
				SET old_end_time = end_time;
 
			-- 否則
			ELSE
				-- 校驗是否在區間內
				 if (start_time >= old_start_time AND start_time = old_end_time) THEN
 
					-- 校驗結束時間是否不在在區間內
				   if (end_time  old_start_time OR end_time > old_end_time) THEN
						SET old_end_time = end_time;
				   END IF;
 
				 -- 否則
				 ELSE
 
				   if (start_time  old_start_time )  THEN
 
						SET old_start_time = start_time;
 
					 ELSE
 
						SET num = num + TIMESTAMPDIFF(MINUTE, old_start_time, old_end_time);
						SET old_start_time = start_time;
						SET old_end_time = end_time;
					 END IF;
				 END IF;
			END IF;
			-- 校驗是否最后一次循環
			IF done=1 THEN 
			    SET num = num + TIMESTAMPDIFF(MINUTE, old_start_time, old_end_time);
			    LEAVE posLoop;
			END IF;
		-- 結束循環	
		END LOOP posLoop;
	-- 關閉游標 
	CLOSE list;
	SELECT num;
END;
-- 調用存儲過程
call sumTime();

 

-- 刪除存儲過程
drop procedure if exists sumTime;

到此這篇關于MySQL去除重疊時間求時間差和的實現的文章就介紹到這了,更多相關MySQL 求時間差和內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • MySQL 到底是如何做到多版本并發的?
  • mysql過濾復制思路詳解
  • MySQL 外鍵(FOREIGN KEY)用法案例詳解
  • MySQL如何利用存儲過程快速生成100萬條數據詳解
  • Python接口自動化淺析pymysql數據庫操作流程
  • MySQL事務控制流與ACID特性
  • Mysql使用存儲過程快速添加百萬數據的示例代碼
  • Mysql數據庫中datetime、bigint、timestamp來表示時間選擇,誰來存儲時間效率最高
  • MySQL的全局鎖和表級鎖的具體使用
  • 基于Redo Log和Undo Log的MySQL崩潰恢復解析

標簽:定西 三明 揚州 福州 溫州 山西 阿里 無錫

巨人網絡通訊聲明:本文標題《MySQL去除重疊時間求時間差和的實現》,本文關鍵詞  MySQL,去除,重疊,時間,求,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《MySQL去除重疊時間求時間差和的實現》相關的同類信息!
  • 本頁收集關于MySQL去除重疊時間求時間差和的實現的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    91精品国产乱码久久蜜臀| 日本视频一区二区三区| 国产精品进线69影院| 韩国精品久久久| 欧美一区二区在线观看| 亚洲国产综合色| 91色视频在线| 最新国产精品久久精品| 91在线一区二区三区| 中日韩av电影| 91麻豆swag| 亚洲成人av免费| 日韩丝袜美女视频| 国产成人一区在线| 亚洲视频小说图片| 欧美日韩在线精品一区二区三区激情| 亚洲免费在线观看视频| 欧美视频在线不卡| 免费成人av在线| 久久精品水蜜桃av综合天堂| 国产黄色精品视频| 亚洲图片欧美激情| 欧美精品在线视频| 老司机免费视频一区二区三区| 欧美精品一区二| 一本一道综合狠狠老| 日韩国产欧美在线观看| 国产午夜精品福利| 欧美日韩午夜在线视频| 国产美女在线观看一区| 亚洲人成在线观看一区二区| 日韩午夜激情电影| 99久久久久久99| 视频一区二区三区在线| 久久精品视频免费| 欧美视频完全免费看| 国内精品伊人久久久久av影院| 亚洲天天做日日做天天谢日日欢| 欧美一卡二卡三卡| 91热门视频在线观看| 国产在线麻豆精品观看| 一区二区三区精品| 国产清纯在线一区二区www| 欧美色成人综合| 国产成人在线观看免费网站| 热久久国产精品| 艳妇臀荡乳欲伦亚洲一区| 欧美国产日产图区| 精品国产区一区| 欧美伊人久久久久久久久影院 | 国产欧美日韩亚州综合| 欧美亚洲尤物久久| 91麻豆免费观看| 懂色av中文字幕一区二区三区| 麻豆国产一区二区| 日韩精品一二区| 午夜精品福利一区二区三区av| 亚洲三级久久久| 亚洲天堂2014| 亚洲视频小说图片| 亚洲欧美视频一区| 亚洲免费三区一区二区| 亚洲美女视频一区| 亚洲国产精品传媒在线观看| 国产视频一区二区三区在线观看| 欧美大度的电影原声| 日韩欧美综合一区| 欧美va亚洲va香蕉在线| 2020国产精品自拍| 亚洲精品在线免费观看视频| 精品奇米国产一区二区三区| 欧美大黄免费观看| 精品久久国产字幕高潮| 久久亚洲一区二区三区四区| 精品国偷自产国产一区| 精品卡一卡二卡三卡四在线| 久久综合久久综合亚洲| 久久九九99视频| 久久精品水蜜桃av综合天堂| 国产欧美日韩综合| 国产精品成人在线观看| 一区二区三区.www| 日本成人超碰在线观看| 精品影视av免费| 成人午夜电影网站| 色综合久久88色综合天天| 在线欧美日韩国产| 6080国产精品一区二区| 久久综合狠狠综合久久综合88| 国产欧美精品一区二区色综合| 亚洲天堂精品视频| 五月婷婷久久综合| 久久国产精品区| av电影在线观看不卡| 欧美精品高清视频| 久久精品免视看| 亚洲线精品一区二区三区八戒| 美女mm1313爽爽久久久蜜臀| 成人午夜看片网址| 欧美一区二区三区视频免费| 国产精品私人影院| 天天色综合天天| 成人激情图片网| 欧美区视频在线观看| 国产精品色眯眯| 日韩黄色免费电影| 9色porny自拍视频一区二区| 91精品国产色综合久久不卡蜜臀| 国产午夜精品一区二区三区嫩草| 亚洲色图都市小说| 久久精品国产秦先生| 在线观看日韩一区| 国产欧美日韩视频一区二区| 偷拍亚洲欧洲综合| 99vv1com这只有精品| 精品国产伦一区二区三区观看体验 | 色婷婷精品大在线视频| 精品日韩在线观看| 五月天欧美精品| 色成年激情久久综合| 久久精品欧美一区二区三区不卡 | 天天综合网天天综合色| 不卡一区二区中文字幕| 欧美精品一区二区不卡| 天堂一区二区在线| 91久久一区二区| 国产精品视频你懂的| 国产综合色在线| 欧美成人a在线| 蜜桃视频一区二区三区在线观看| 欧美综合欧美视频| 亚洲激情男女视频| 色综合久久久网| 亚洲欧美区自拍先锋| 99re热这里只有精品免费视频| 国产欧美日韩激情| 国产乱理伦片在线观看夜一区| 精品日韩99亚洲| 激情综合网天天干| 精品国产免费久久| 极品美女销魂一区二区三区| 精品久久人人做人人爽| 麻豆91免费观看| 日韩视频一区在线观看| 蜜桃视频在线观看一区| 日韩精品资源二区在线| 免费成人美女在线观看.| 欧美第一区第二区| 国产精品99久久久久久宅男| 日本一区二区三区国色天香| 国产+成+人+亚洲欧洲自线| 国产欧美日韩三级| 一本色道久久综合狠狠躁的推荐| 亚洲免费伊人电影| 在线观看91精品国产麻豆| 亚洲超丰满肉感bbw| 欧美一级黄色录像| 国产精品资源站在线| 国产精品视频第一区| 日本韩国视频一区二区| 午夜精品影院在线观看| 欧美一区二区三区四区高清| 国产伦精一区二区三区| 亚洲精品乱码久久久久久久久 | 久久久久久亚洲综合| 狠狠色丁香久久婷婷综| 国产精品伦理一区二区| 一本久道久久综合中文字幕 | 成人国产免费视频| 亚洲视频免费在线观看| 欧美日韩在线播放一区| 另类人妖一区二区av| 国产午夜精品美女毛片视频| 在线免费精品视频| 精品一区二区三区免费视频| 中文字幕日本不卡| 欧美精品一二三| 国产福利精品导航| 亚洲va在线va天堂| 欧美国产精品专区| 欧美一区二区私人影院日本| 国产成人超碰人人澡人人澡| 日韩主播视频在线| 国产精品久久久久久久浪潮网站| 欧美顶级少妇做爰| 91丨porny丨国产| 久久国产尿小便嘘嘘| 亚洲日本成人在线观看| 久久综合久久综合九色| 欧美日韩黄色一区二区| av不卡在线播放| 黑人巨大精品欧美一区| 午夜伦欧美伦电影理论片| 亚洲日本一区二区| 中文字幕成人在线观看| 精品久久久久久久人人人人传媒| 欧美日韩国产不卡| 9l国产精品久久久久麻豆| 国产成人精品三级麻豆| 国内成人免费视频|