mysql 計算時間跨度 SQL中的日期範圍交集

2021-10-22 05:17:52 字數 721 閱讀 1081

我有乙個表,其中每一行都有乙個開始和結束日期時間.這些可以是任意短或長跨度.

我想查詢所有行的交集的總持續時間與兩個開始和停止日期時間.

你怎麼能在mysql中做到這一點?

或者您是否必須選擇與查詢開始和停止時間相交的行,然後計算每行的實際重疊並將其與客戶端相加?

舉個例子,使用毫秒來使它更清晰:

有些行:

row start stop

1 1010 1240

2 950 1040

3 1120 1121

我們想知道這些行在1030到1100之間的總和時間.

讓我們計算每一行的重疊:

row intersection

1 70

2 10

3 0所以這個例子中的總和是80.

解決方法:

如果你的例子應該在第一行說70

假設@range_start和@range_end作為條件引數:

select sum( least(@range_end, stop) - greatest(@range_start, start) )

from table

where @range_start < stop and @range_end > start

使用greatest / least和date functions,你應該能夠得到你需要直接操作日期型別的東西.

標籤:mysql,database,sql

Python校驗年 月時間跨度

最近做的乙個需求,需要在python裡面校驗時間跨度。兩個時間點分別是start time,end time,之前知道timedelta可以按天計算,用於加減運算。但不能滿足月份或者年這種天數不定的需求。可以用relativedelta解決這個問題 from dateutil.relativedel...

研究 網路釣魚攻擊的平均時間跨度為21小時

程式設計客棧 www.cppcns.com 8月3日 訊息 根據乙個由谷歌 paypal 三星和亞利桑那州立大學的安全研究人員組成的團隊,花了整整一年的時間來分析網路釣魚現狀以及使用者如何與網路釣魚頁面互動。在乙個涉及分析22,553,707 個使用者訪問404,628 個釣魚網頁的龐大專案中,研究...

mysql中sql對時間的計算

很多時候需要對sql中的時間進行相關的計算來達到自己的目的 例如 我要查詢新使用者的登陸次數。則就需要查詢登陸時間比註冊時間小於30天之類的登陸次數 regtime 30day logintime 1.select from sys user where timestamp regtime,30 0...