久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

在時(shí)間范圍內(nèi)查找事件

Finding Events During a Timeframe(在時(shí)間范圍內(nèi)查找事件)
本文介紹了在時(shí)間范圍內(nèi)查找事件的處理方法,對(duì)大家解決問題具有一定的參考價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧!

問題描述

試圖找出適用于多種情況的查詢.簡而言之,數(shù)據(jù)可能處于兩種情況之一.假設(shè)我正在尋找在給定時(shí)間范圍內(nèi)發(fā)生的事件的 record_id:6/26/2012 10:00AM 和 6/27/2012 11:00AM 數(shù)據(jù)庫中的記錄可能如下所示:

Trying to figure out a query that could work for multiple situations. In a nutshell the data can be in one of twosituations. Lets say I'm looking for the record_id for events happened during a given time frame: 6/26/2012 10:00AM and 6/27/2012 11:00AM The records can look like this in the database:

Record    Event     Time
1         Start     6/26/2012 10:05AM
1         End       6/26/2012 10:45AM
2         Start     6/26/2012 09:55AM
2         End       6/26/2012 11:05AM

獲取記錄 1 很容易,只需使用 between 函數(shù),但我在試圖找出一個(gè)查詢以返回記錄 1 和 2 時(shí)遇到困難.

Getting record 1 is easy, just using the between function, but I'm stumbling trying to figure out a query to return both records 1 and 2.

建議?

推薦答案

您可以簡單地?cái)U(kuò)大范圍,但這可能會(huì)帶回與您預(yù)期不同的記錄.

You can simply widen the range, but this may bring back different records than you intend.

SELECT  RECORD, EVENT, TIME 
FROM SO_RecordEvent AS R
WHERE TIme BETWEEN  '6/26/2012 9:55AM'  AND '6/26/2012 11:06AM'

這將返回具有該范圍內(nèi)開始或結(jié)束時(shí)間的任何記錄的所有記錄,包括落在該范圍之外的相關(guān)記錄(換句話說,只有一次在該范圍內(nèi)的記錄 - 但在此之前或結(jié)束之前開始)after - 它仍然會(huì)顯示它之外的開始或結(jié)束時(shí)間)并允許您縮短范圍.

This will return all records for anything that has either a start or end time within the range, including the associated records falling outside of the range (In other words records that only have one time in the range - but began before or ended after - it will still show the start or end time outside of it) and allow you you shorten your range.

 ;WITH X AS 
 (
    SELECT RECORD,EVENT,TIME FROM SO_RecordEvent 
 )
 SELECT R.RECORD,R.EVENT,R.TIME 
 FROM SO_RecordEvent AS R
 INNER JOIN X ON R.Record = X.Record
 WHERE X.TIme BETWEEN  '6/26/2012 10:05AM'  AND '6/26/2012 11:05AM'
 GROUP BY R.RECORD,R.EVENT,R.TIME

但我認(rèn)為您可能真的想要這樣的東西,它確實(shí)為您提供了在那段時(shí)間開始的所有內(nèi)容,即使它在范圍之外開始和結(jié)束,就像您的記錄 2 示例一樣.

But I think you may really want something like this, which truly gives you everything that was started during that time, even if it started AND ended outside of the range, as is your record 2 example.

改變邏輯 - 決定以這種方式思考它而不是解決情況 - 任何在開始和結(jié)束內(nèi)開始的事情,在開始和結(jié)束內(nèi)結(jié)束的任何事情,以及在開始和結(jié)束之后開始的任何事情.我認(rèn)為這涵蓋了在此期間運(yùn)行的任何內(nèi)容(開始之前結(jié)束之內(nèi),開始和結(jié)束之內(nèi),開始之內(nèi)和結(jié)束之后,以及開始之前和之后結(jié)束)

Changed logic - instead of addressing situations decided to think about it this way - anything that started within start and end, anything that ended within start and end, and anything that started before and ended after. I think this covers anything that runs during this time (starts before ends within, starts and ends within, starts within and ends after, and starts before and ends after)

  SELECT X.RECORD,X.TIME AS STARTTIME,Y.TIME AS ENDTIME 
  FROM SO_RecordEvent AS X
  INNER JOIN SO_RecordEvent Y ON Y.Record = X.Record AND Y.EVENT = 'END'
  WHERE  X.EVENT = 'START'
  AND 
  ((X.TIME >= '6/26/2012 10:00AM' AND X.TIME <= '6/26/2012 11:00AM')
  OR (Y.TIME >= '6/26/2012 10:00AM' AND Y.TIME <= '6/26/2012 11:00AM')
  OR (X.TIME <= '6/26/2012 10:00AM' AND Y.TIME >= '6/26/2012 11:00AM'))

要使用的變量:

 DECLARE @START datetime, @END datetime
 SET @START = '6/26/2012 10:00AM'
 SET @END = '6/26/2012 11:00AM'

   SELECT X.RECORD,X.TIME AS STARTTIME,Y.TIME AS ENDTIME 
   FROM SO_RecordEvent AS X
   INNER JOIN SO_RecordEvent Y ON Y.Record = X.Record AND Y.EVENT = 'END'
   WHERE  X.EVENT = 'START'
   AND 
  ((X.TIME >= @START AND X.TIME <= @END)
  OR (Y.TIME >= @START AND Y.TIME <= @END)
  OR (X.TIME <= @START AND Y.TIME >= @END))

這篇關(guān)于在時(shí)間范圍內(nèi)查找事件的文章就介紹到這了,希望我們推薦的答案對(duì)大家有所幫助,也希望大家多多支持html5模板網(wǎng)!

【網(wǎng)站聲明】本站部分內(nèi)容來源于互聯(lián)網(wǎng),旨在幫助大家更快的解決問題,如果有圖片或者內(nèi)容侵犯了您的權(quán)益,請(qǐng)聯(lián)系我們刪除處理,感謝您的支持!

相關(guān)文檔推薦

Converting Every Child Tags in to a Single Column with multiple Delimiters -SQL Server (3)(將每個(gè)子標(biāo)記轉(zhuǎn)換為具有多個(gè)分隔符的單列-SQL Server (3))
How can I create a view from more than one table?(如何從多個(gè)表創(chuàng)建視圖?)
Create calculated value based on calculated value inside previous row(根據(jù)前一行內(nèi)的計(jì)算值創(chuàng)建計(jì)算值)
How do I stack the first two columns of a table into a single column, but also pair third column with the first column only?(如何將表格的前兩列堆疊成一列,但也僅將第三列與第一列配對(duì)?) - IT屋-程序員軟件開發(fā)技
Recursive t-sql query(遞歸 t-sql 查詢)
Convert Month Name to Date / Month Number (Combinations of Questions amp; Answers)(將月份名稱轉(zhuǎn)換為日期/月份編號(hào)(問題和答案的組合))
主站蜘蛛池模板: 中文在线视频观看 | 国产伦精品一区二区三区照片91 | 在线观看国产 | 一区二区三区在线免费观看 | 美女一级a毛片免费观看97 | 国产夜恋视频在线观看 | 日韩国产黄色片 | 国产免费观看视频 | 五月综合色啪 | 青草青草久热精品视频在线观看 | 国产精品69毛片高清亚洲 | 在线观看亚洲精品 | 欧美在线资源 | 国产精品精品视频一区二区三区 | 在线观看av中文字幕 | 福利社午夜影院 | 黄色片在线观看网址 | 国产小u女发育末成年 | 久久精品免费 | 91精品国产综合久久福利软件 | 免费观看a级毛片在线播放 黄网站免费入口 | 久久久久久影院 | 中文字字幕一区二区三区四区五区 | 日韩精品一区二区三区中文在线 | 国产色网站 | 99久久精品免费看国产小宝寻花 | 国产精品久久久久av | 久久久精品视频免费看 | 在线观看免费观看在线91 | 久久人人爽人人爽 | 91在线观看 | 黄网站免费入口 | 亚洲激情一级片 | 国产伦精品一区二区三区视频金莲 | 日本精品一区二区 | 综合国产在线 | 天天久久| 一区二区三区欧美在线 | 麻豆毛片 | 羞羞视频免费观看 | 色综合色综合色综合 |