---
title: "Hitta ett ledigt datum i från och till kolumner"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/81810-hitta-ett-ledigt-datum-i-från-och-till-kolumner"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "mattiasnordin"
published: "2003-07-11T12:21:00.000Z"
updated: "2003-07-11T14:23:34.000Z"
replies: 16
views: 419
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/81810-hitta-ett-ledigt-datum-i-från-och-till-kolumner"
---

# Hitta ett ledigt datum i från och till kolumner

## #1 — mattiasnordin, 2003-07-11T12:21Z

Hej, 
Jag behöver hjälp att konstruera en fråga som kontrollerar om en viss datumperiod är ledig i en kalender eller ej.

Tabellen ser ut som följande:

bokad_start \| bokad_slut \| bokad_av \| osv...

bokad_start och bokad_slut innehåller datum och tid (2004-04-12 14:00).

Jag behöver en fråga som kontrollerar om det finns ledig tid i min kalender innan jag lägger in ny data. 

Förstår någon vad jag menar? :q

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

## #2 — LarsG, 2003-07-11T12:34Z

```
select 1 from t
where <din-starttid> between bokad_start and bokad_slut
or <din-sluttid> between bokad_start and bokad_slut
```

Om du får någon post tillbaka så är det bokat.

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

## #3 — mattiasnordin, 2003-07-11T12:49Z

Det känns rätt, men jag får inte riktigt till det...

```
select 1 from T_bokad_av_användare WHERE 2003-07-11 14:46 BETWEEN bokad_start AND bokad_slut OR 2003-07-11 15:46 BETWEEN bokad_start AND bokad_slut 
--------------------------------------------------------------------------------

Microsoft JET Database Engine error '80040e14' 

Syntax error (missing operator) in query expression '2003-07-11 14:46 BETWEEN bokad_start AND bokad_slut OR 2003-07-11 15:46 BETWEEN bokad_start AND bokad_slut'. 

/script_booking/show_selected_product.asp, line 37
```

Båda bokad_start och bokad_slut är i textform i databasen. Ska jag ändra det till ett datum?

Är det ett syntaxfel?

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

## #4 — @nders, 2003-07-11T12:51Z

Du saknar apostrofer runt värdena, och, **ja** datumvärden skall alltid vara av rätt datatyp i tabellen.

Inte sätter du en klisterlapp som det står "strumpor" på på din kalsonglåda för att det var enklare att stava till? ;)

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

## #5 — mattiasnordin, 2003-07-11T13:09Z

;-)

Får inte riktigt till det. Får inte något felmeddelande men jag kan inte provocera fram en träff (dvs boka på ett redan bokat datum).

```
select 1 from T_bokad_av_användare WHERE #2003-03-11 14:46# BETWEEN bokad_start AND bokad_slut OR #2003-09-11 15:46# BETWEEN bokad_start AND bokad_slut
```

bokad_start och bokad_slut är nu i datumformat.

Vad kan jag göra för fel? I databasen finns det (bokad_start =  2003-04-05 12:00:00) (bokad_slut = 2003-04-06 14:00:00)

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

## #6 — mattiasnordin, 2003-07-11T13:18Z

Vad betyder SELECT 1 ?

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

## #7 — @nders, 2003-07-11T13:20Z

"Hämta siffran 1"

Godtyckligt värde alltså, det gäller ju bara att hämta en flagga *någonting finns*.

Mvh

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

## #8 — Engine^, 2003-07-11T13:21Z

Det är inget fel. Det finns nämligen ingen tid bokad *innan* 2003-03-11 och ingen tid *efter* 2003-09-11.

```
SELECT 1 FROM T_bokad_av_användare
WHERE [i]start[/i] BETWEEN bokad_start AND bokad_slut
  OR [i]stop[/i] BETWEEN bokad_start AND bokad_slut
  OR ([i]start[/i] < Min(bokad_start) AND [i]stop[/i] > Max(bokad_start))
```

SELECT 1 innebär att frågan returnerar en etta för varje träff.

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

## #9 — mattiasnordin, 2003-07-11T13:21Z

Vad göra för fel..?..

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

## #10 — mattiasnordin, 2003-07-11T13:26Z

```
	'kontrollerar om datumet är upptaget'
	sql = "select 1 from T_bokad_av_användare "
	sql = sql & " WHERE #" &sBookedFrom &"# BETWEEN bokad_start AND bokad_slut "
	sql = sql & " OR #" &sBookedTo &"# BETWEEN bokad_start AND bokad_slut "
	response.write sql &"<hr>"
	set rsTest = connect.execute(sql) %> 
	<%if rsTest.eof then%>
	<script>
	alert("test") 	
	</script>
	<% else %>
	TEST 2222222222222
	<% end if %>
```

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

## #11 — Engine^, 2003-07-11T13:36Z

[Hänvisar](http://www.webforum.nu/showthread.php?s=&postid=675965#post675965) till mitt svar om du missade det...

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

## #12 — mattiasnordin, 2003-07-11T13:42Z

Jag använder access 2002 som databas. Får nu detta fel... Tack för hjälpen alla!

```
SELECT 1 FROM T_bokad_av_användare WHERE start BETWEEN bokad_start AND bokad_slut OR stop BETWEEN bokad_start AND bokad_slut OR (start < Min(bokad_start) AND stop > Max(bokad_start))
--------------------------------------------------------------------------------
 
Microsoft JET Database Engine error '80040e14' 

Cannot have aggregate function in WHERE clause (start Between bokad_start And bokad_slut Or stop Between bokad_start And bokad_slut Or start<Min(bokad_start) And stop>Max(bokad_start)). 

/script_booking/show_selected_product.asp, line 36
```

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

## #13 — Engine^, 2003-07-11T14:05Z

Åh... tro om det här kan fungera lite bättre

```
SELECT 1 FROM T_bokad_av_användare
WHERE start BETWEEN bokad_start AND bokad_slut
  OR stop BETWEEN bokad_start AND bokad_slut
  OR (start <= (SELECT Min(bokad_start) FROM T_bokad_av_användare) AND stop >= (SELECT Max(bokad_slut) FROM T_bokad_av_användare))
```

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

## #14 — mattiasnordin, 2003-07-11T14:09Z

Ge inte upp nu Engine!

```
SELECT 1 FROM T_bokad_av_användare WHERE start BETWEEN bokad_start AND bokad_slut OR stop BETWEEN bokad_start AND bokad_slut OR (start <= (SELECT Min(bokad_start) FROM T_bokad_av_användare) AND stop >= (SELECT Max(bokad_slut) FROM T_bokad_av_användare)) 
--------------------------------------------------------------------------------

Microsoft JET Database Engine error '80040e10' 

No value given for one or more required parameters. 

/script_booking/show_selected_product.asp, line 41
```

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

## #15 — mattiasnordin, 2003-07-11T14:12Z

Sorry, glömde att byta ut start och stop...

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

## #16 — mattiasnordin, 2003-07-11T14:15Z

Det fungerar! Superbra! :-) 1000 tack Engine...!...

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

## #17 — Engine^, 2003-07-11T14:23Z

Trevligt, varsågod.

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/81810-hitta-ett-ledigt-datum-i-från-och-till-kolumner
