---
title: "Kolla om ett tidsspann finns inom ett antal andra tidsspann?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/183861-kolla-om-ett-tidsspann-finns-inom-ett-antal-andra-tidsspann"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "inspiro"
published: "2010-06-16T12:30:05.000Z"
updated: "2010-06-16T13:41:37.000Z"
replies: 2
views: 515
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/databaser-sql/183861-kolla-om-ett-tidsspann-finns-inom-ett-antal-andra-tidsspann"
---

# Kolla om ett tidsspann finns inom ett antal andra tidsspann?

## #1 — inspiro, 2010-06-16T12:30Z

Hej! Jag har två listor som innehåller tider, en start- och en sluttid. För varje tidspann i den första listan vill jag kolla om den tiden överlappar helt eller delvis någon tid i den andra listan. Har fastnat...

Lista 1:

Starttid \| Sluttid
2010-01-01 10:00 \| 2010-01-01 12:00
2010-01-01 13:00 \| 2010-01-01 17:00

Lista 2:

Starttid \| Sluttid
2010-01-01 09:00 \| 2010-01-01 10:00
2010-01-01 10:00 \| 2010-01-01 11:00
2010-01-01 11:00 \| 2010-01-01 12:00

I ovanstående exempel vill jag alltså få fram att den första tiden i lista 1 är upptagen men inte den andra tiden. Som svar skulle 0 eller 1 funka perfekt!

Permalänk: https://www.webforum.nu/p/183861

## #2 — Fredde Mannen, 2010-06-16T12:57Z

Med BETWEEN kan du kontrollera om ett datum+tid är inom lista 2 starttid och sluttid. 

\[Lista 1\].Starttid BETWEEN \[lista 2\].Starttid and \[lista 2\].Sluttid
\[Lista 1\].Sluttid BETWEEN \[lista 2\].Starttid and \[lista 2\].Sluttid

Du kan säkerligen med någon CASE-sats i sql returnera 0 eller 1 beroende på om en subfråga är null eller inte. 

```
case
        when exists (select * from T2 where (T2.a BETWEEN T1.a AND T1.b AND T2.b BETWEEN T1.a AND T1.b)) then
             1
        else
            0
end
from t1
```

Nu är inte ovanstående exempel genomtänkt.. men åt det hållet..

Permalänk: https://www.webforum.nu/p/2240734

## #3 — inspiro, 2010-06-16T13:41Z

Tack för svar! Fick dock inte kläm på ditt exempel riktigt men jag fick tag på följande kodsnutt som gjorde det jag önskade:

```
SELECT		l1.StartDate,
		l1.EndDate,
		COALESCE(e.found, 0) AS RangeExists
FROM		@List1 AS l1
OUTER APPLY	(
			SELECT TOP(1)	1
			FROM		@List2 AS l2
			WHERE		l2.StartDate <= l1.EndDate
					AND l2.EndDate >= l1.StartDate
		) AS e(found)
```

Permalänk: https://www.webforum.nu/p/2240737

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/183861-kolla-om-ett-tidsspann-finns-inom-ett-antal-andra-tidsspann
