---
title: "Krånglig fråga med klockslag!"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/174069-krånglig-fråga-med-klockslag/page6"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "oskars"
published: "2008-09-15T17:40:55.000Z"
updated: "2008-10-03T10:04:36.000Z"
replies: 131
views: 4278
page: 6
pages: 7
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/174069-krånglig-fråga-med-klockslag"
---

# Krånglig fråga med klockslag!

_Sida 6 av 7._

## #101 — oskars, 2008-09-24T20:35Z

Närå! Det behöver du inte. Löser det nog genom att bara köra det lokalt istället! :) Du gör nog med frågan!

Har bara spånat igenom lite snabbt hittills... Ser bra ut tror jag? ... Ska be en annan ansvarig kolla igenom det också för att se så det stämmer, och så att jag inte missar något! Har du kollat något?

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

## #102 — Peter S, 2008-09-24T20:35Z

Jag tror frågan skulle kunna göras både enklare och effektivare om i databasen startdatum och starttid slogs ihop till ett datumfält, och slutdatum och sluttid slogs ihop till ett datumfält.

\[Edit\]
Jag har kollat igenom några poster och tycker det ser rätt ut.

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

## #103 — oskars, 2008-09-24T20:39Z

okej... Förlåt att den är sån asså :( Jag ska försöka bygga om den efter att första arbetet av databasen är utfört med den nuvarande frågan.

Näeh nu måste jag sova. Jag har datum och tider på näthinna nu!

Bra jobbat iaf! Själv försöker jag komma på lösningar, och testar lite i koden, men du bräcker mig alltid :D

EDIT: aha, såg din EDIT nu :) Jo, jag börjar också komma till den insikten. Har kollat igenom några datum vid midnatt... Fan asså... Du är grym!

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

## #104 — oskars, 2008-09-26T15:27Z

hm... nä.... det funkar ibland och ibland inte... får inte rätsida på det...

Hajjar inte vart den röda tråden är...

Ska göra om formatet till det korrekta... vad tror du om det?

EDIT: När vi kontrollerat här så verkar det vara något med korta resor som inte får vara med... ibland....

EDIT: Det kan vara datafel i tabellen som orsakar felen...... Om man gör om frågan så den funkar med riktigt datumformat ... är den en bagatell då?

EDIT 20:15: Det verkar vara datafel eftersom felen inte är exakta varje gång. Dom är inte konstanta. Det blir till att slipa på datan istället! Om inte du hittar något!   :stud

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

## #105 — Peter S, 2008-09-26T18:24Z

Jag tror det blir mycket enklare om dagens fyra fält slås samman till totalt två fält i stället :)

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

## #106 — oskars, 2008-09-26T18:35Z

Jo, jag med... har gjort det så nu... men har inte tid att jobba med det själv just nu. Jag återupptar mitt arbete vid typ 23:30 eller nått.. och arbetar vidare med det imorgon tidigt.. måste bli färdig tills på söndag

Jag kör fortfarande med gamla formatet, men det nya kommer se ut så här:
Slut: 2008-01-01 08:30:00
Start: 2008-01-01 08:30:00

Inte mkt mer än det.

Erbjudandet ligger fortfarande kvar, så du vet!

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

## #107 — oskars, 2008-09-26T18:37Z

...men eftersom frågan fungerar helt korrekt på vissa tider... så måste det ju vara datan det är fel på?

Med andra ord = Frågan fungerar helt rätt!

? :)

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

## #108 — Peter S, 2008-09-27T08:08Z

Om de nya datumena sparas i *start* resp. *slut*, skulle jag vilja skriva så här:

```
select dt.s, max(dt.c)
from
(
select a.start as s
     , ( select count(*) + 1
           from allingsas
          where id <> a.id
            and start > #2008-01-01 23:00:00#
            and slut < #2008-01-02 01:00:00#
            and ((start between a.start and a.slut) or (slut between a.start and a.slut)) ) as c
  from allingsas a
 where weekday(a.start) = 3
   and a.start > #2008-01-01 23:00:00#
   and a.slut < #2008-01-02 01:00:00#
) as dt
group
    by dt.s
```

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

## #109 — oskars, 2008-09-27T09:06Z

Fan va vacker den blev :)

Det jag fungerar på är hur fan du lyckas göra sökningen på ALLA poster på utvalt datum och tid. Som jag ser det så görs bara sökningar på 2st poster... Fast jag vet ju att du gjort rätt!

Btw, den gamla koden... Den returnerar ibland 0 och ibland inget datum alls... funderar lite på varför ...

Om jag vill ha "mindre eller lika med" så är det väl bara att göra så här?

> **Peter S skrev:**
>
> ```
> select dt.s, max(dt.c)
> from
> (
> select a.start as s
>      , ( select count(*) + 1
>            from allingsas
>           where id <> a.id
>             and start >= #2008-01-01 23:00:00#
>             and slut <= #2008-01-02 01:00:00#
>             and ((start between a.start and a.slut) or (slut between a.start and a.slut)) ) as c
>   from allingsas a
>  where weekday(a.start) = 3
>    and a.start >= #2008-01-01 23:00:00#
>    and a.slut <= #2008-01-02 01:00:00#
> ) as dt
> group
>     by dt.s
> ```

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

## #110 — oskars, 2008-09-27T21:07Z

Försöker få ordning på den men i frågan vill den ju ha både TID och DATUM från forumläret.. jag kommer bara mata in TID från formuläret.. så ska den leta igenom alla datumen

EDIT: Ska det inte stå COUNT(\*)+1 istället för COUNT(\*) i senaste frågan som inte den frågan med datumformatet?

EDIT: Det krisar. Frågan funkar inte. Antar att det bästa är att gå över till frågan med det riktiga datumformatet.

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

## #111 — oskars, 2008-09-28T12:29Z

Försöker mig på den nya frågan:

```
Veckodag = Request.Form("veckodag")
	Starttid = "10:00:00"
	Sluttid = "11:00:00"
	
	select dt.s, max(dt.c)
		from (
			select a.new_Start as s, ( 
				select count(*)+1 
				from allingsas 
				where id <> a.id 
				and new_Start > #"&Starttid&"# 
				and new_Slut < #"&Sluttid&"# 
				and ((new_Start between a.new_Start and a.new_Slut) 
				or (new_Slut between a.new_Start and a.new_Slut)) ) as c
		from allingsas a 
			where Weekday(a.new_Start) = "&Veckodag&" 
			and a.new_Start > #"&Starttid&"# 
			and a.new_Slut < #"&Sluttid&"#) as dt 
	group by dt.s

	Do Until RecSet.EOF
	
		Response.Write("<tr style=""background-color:#"&Color&"""><td width=""100"">"&RecSet("s")&"</td><td width=""10"">;</td><td>"&RecSet("c")&"</td></tr>")

osv osv
```

Den returnerar dock ingenting ;)

Så här ser den ut, utskriven:

```
select dt.s, max(dt.c) from (select a.new_Start as s, ( select count(*)+1 from allingsas where id <> a.id and new_Start > #10:00:00# and new_Slut < #11:00:00# and ((new_Start between a.new_Start and a.new_Slut) or (new_Slut between a.new_Start and a.new_Slut)) ) as c from allingsas a where Weekday(a.new_Start) = 2 and a.new_Start > #10:00:00# and a.new_Slut < #11:00:00#) as dt group by dt.s
```

:)

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

## #112 — Peter S, 2008-09-28T17:36Z

Hej Oskar,

Titta på mitt senaste förslag, där jämförs start resp. slut med kompletta datumtidsstämplar. I ditt senaste försök kan jag bara se att tiden är med.

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

## #113 — oskars, 2008-09-28T17:38Z

Hej Peter!

Tack för att du lever!

Jag såg att du både använde datum + tid! Men jag matar ju inte in något datum från formuläret?

Ska jag göra en loop utanför denna frågan som loopar igenom varje Måndag och skriver in variabeln i SQL-frågan?

EDIT: Tror du... att det här kommer gå vägen?

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

## #114 — Peter S, 2008-09-28T18:19Z

Ja, just det, tror du att du kan dela upp tiden på timmar och minuter? Så i stället för att mata in '13:24:00' så bryter du ut '13' och '24' och konverterar dem till tal:

```
select dt.s, max(dt.c)
from
(
select a.start as s
     , ( select count(*) + 1
           from allingsas
          where id <> a.id
            and ((hour(start) = 12 and minute(start) >= 0) or hour(start) > 12)
            and (((hour(slut) = 13 and minute(slut) <= 0) or hour(slut) < 13) or (13 < 12 and hour(slut) > 12))
            and ((start between a.start and a.slut) or (slut between a.start and a.slut)) ) as c
  from allingsas a
 where weekday(a.start) = 3
   and ((hour(a.start) = 12 and minute(a.start) >= 0) or hour(a.start) > 12)
   and (((hour(a.slut) = 13 and minute(a.slut) <= 0) or hour(a.slut) < 13) or (13 < 12 and hour(a.slut) > 12))
) as dt
group
    by dt.s
```

Ovan skall hour(a.start) jämföras med timmen för starttiden, minute(a.start) med minuterna för starttiden, hour(a.slut) med timmen för sluttiden och minute(a.slut) med minuterna för sluttiden. :)

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

## #115 — oskars, 2008-09-28T18:25Z

Tack!

Återkommer efter test!

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

## #116 — oskars, 2008-09-28T18:46Z

Den säger ändå att \[Microsoft\]\[ODBC Microsoft Access Driver\] Too few parameters. Expected 1.... Jag har angett alla kolumnnamn korrekt...

```
	RecSet.Open "select dt.s, max(dt.c) from (select a.new_Start as s, ( select count(*) + 1 from allingsas where id <> a.id and ((hour(new_Start) = "&startHour&" and minute(new_Start) >= "&startMinute&") or hour(new_Start) > "&startHour&") and (((hour(new_Slut) = "&slutHour&" and minute(new_Slut) <= "&slutMinute&") or hour(new_Slut < "&slutHour&")) or ("&slutHour&" < "&startHour&" and hour(new_Slut) > "&startHour&")) and ((new_Start between a.new_Start and a.new_Slut) or (new_Slut between a.new_Start and a.new_Slut)) ) as c from allingsas a where weekday(a.new_Start) = "&Veckodag&" and ((hour(a.new_Start) = "&startHour&" and minute(s.new_Start) >= "&startMinute&") or hour(a.new_Start) > "&startHour&") and (((hour(a.new_Slut) = "&slutHour&" and minute(a.new_Slut) <= "&slutMinute&") or hour(a.new_Slut < "&slutHour&")) or ("&slutHour&" < "&startHour&" and hour(a.new_Slut) > "&startHour&"))) as dt group by dt.s", Connect, 3, 3
```

Det känns taskigt att returnera frågan så där fult utan radbrytningar när du spaltar upp den så fint från början... ska jag istället lägga in din fråga med samma radbrytningar med " & \_ i koden istället kanske?

EDIT: Lite kod ovanför frågan:

```
	startHour = CInt(Request.Form("startHour"))
	startMinute = CInt(Request.Form("startMinute"))
	
	slutHour = CInt(Request.Form("slutHour"))
	slutMinute = CInt(Request.Form("slutMinute"))
	
	Veckodag = Request.Form("veckodag")
```

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

## #117 — Peter S, 2008-09-28T19:03Z

Ja, skriv hellre ut med radbrytningar :)

Hur ser frågan ut om du skriver ut den med response.write?

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

## #118 — oskars, 2008-09-28T19:04Z

```
	RecSet.Open "select dt.s, max(dt.c) " & _
				"from (select a.new_Start as s, " & _
				"( select count(*) + 1 " & _
				"from allingsas where id <> a.id " & _
				"and ((hour(new_Start) = "&startHour&" and minute(new_Start) >= "&startMinute&") or hour(new_Start) > "&startHour&") " & _
				"and (((hour(new_Slut) = "&slutHour&" and minute(new_Slut) <= "&slutMinute&") or hour(new_Slut < "&slutHour&")) or ("&slutHour&" < "&startHour&" and hour(new_Slut) > "&startHour&")) " & _
				"and ((new_Start between a.new_Start and a.new_Slut) or (new_Slut between a.new_Start and a.new_Slut)) ) as c " & _
				"from allingsas a " & _
				"where weekday(a.new_Start) = "&Veckodag&" " & _
				"and ((hour(a.new_Start) = "&startHour&" and minute(s.new_Start) >= "&startMinute&") or hour(a.new_Start) > "&startHour&") " & _
				"and (((hour(a.new_Slut) = "&slutHour&" and minute(a.new_Slut) <= "&slutMinute&") or hour(a.new_Slut < "&slutHour&")) or ("&slutHour&" < "&startHour&" and hour(a.new_Slut) > "&startHour&"))) " & _
				"as dt group by dt.s", Connect, 3, 3
```

Utskriven:

```
select dt.s, max(dt.c) from (select a.new_Start as s, ( select count(*) + 1 from allingsas where id <> a.id and ((hour(new_Start) = 12 and minute(new_Start) >= 0) or hour(new_Start) > 12) and (((hour(new_Slut) = 13 and minute(new_Slut) <= 0) or hour(new_Slut < 13)) or (13 < 12 and hour(new_Slut) > 12)) and ((new_Start between a.new_Start and a.new_Slut) or (new_Slut between a.new_Start and a.new_Slut)) ) as c from allingsas a where weekday(a.new_Start) = 7 and ((hour(a.new_Start) = 12 and minute(s.new_Start) >= 0) or hour(a.new_Start) > 12) and (((hour(a.new_Slut) = 13 and minute(a.new_Slut) <= 0) or hour(a.new_Slut < 13)) or (13 < 12 and hour(a.new_Slut) > 12))) as dt group by dt.s
```

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

## #119 — Peter S, 2008-09-28T19:25Z

Jag har redigerat min senaste kodpostning; det var ett felstavat alias som ställde till det :)

Dock returnerar inte frågan några resultat. Jag får felsöka det.

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

## #120 — oskars, 2008-09-28T19:39Z

Aha... jag missade det där lilla S'et :)

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/174069-krånglig-fråga-med-klockslag/page6  
Föregående sida: https://www.webforum.nu/amne/databaser-sql/174069-krånglig-fråga-med-klockslag/page5.md  
Nästa sida: https://www.webforum.nu/amne/databaser-sql/174069-krånglig-fråga-med-klockslag/page7.md
