---
title: "Ta ut tider före 08:00 och tider efter 20:00 samt alla tider på helger."
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/180337-ta-ut-tider-före-08-00-och-tider-efter-20-00-samt-alla-tider-på-helger"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "devotion"
published: "2009-09-18T21:09:08.000Z"
updated: "2009-10-19T08:56:04.000Z"
replies: 9
views: 1384
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/180337-ta-ut-tider-före-08-00-och-tider-efter-20-00-samt-alla-tider-på-helger"
---

# Ta ut tider före 08:00 och tider efter 20:00 samt alla tider på helger.

## #1 — devotion, 2009-09-18T21:09Z

Hej! :)  

Om jag har en tabell som innehåller StartTime och StopTime (yyyy-mm-dd hh:mm:ss)

Hur gör jag för att få ut alla poster som har StartTime före 08:00 eller StopTime efter 20:00 + alla tider på helger (lör, sön)

Mvh
Henrik

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

## #2 — Brimba, 2009-09-19T06:00Z

Menar du ungefär såhär?

```
select * from #temp 
where 
	(DATEPART(hh, startdate) < 8 or DATEPART(hh, stopdate) > 20)
	or (DATENAME(dw, startdate) in ('Saturday', 'Sunday') 
		or DATENAME(dw, stopdate) in ('Saturday', 'Sunday')
	)
```

Om du kör sql-server 2008 kan du istället använda timekolumnen och göra något i stil med.

```
select * from mytimetable
where 
	(starttime < '08:00' or stoptime > '20:00')
	or (DATENAME(dw, stopdate) in ('Saturday', 'Sunday') 
		or DATENAME(dw, stopdate) in ('Saturday', 'Sunday')
	)
```

Alltså att du delar upp datum och tid i två olika kolumner.

Jag visste inte heller om du ville gå på startdate eller stopdate när helgkollen skall göras.

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

## #3 — devotion, 2009-09-20T06:59Z

Funkar finfint! (y)

Mvh
Henrik

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

## #4 — devotion, 2009-09-26T15:07Z

Hej igen!

Hur ändrar man villkoret till detta:

> Ta med alla tider som hänför sig till innan 08:00 (även med stopptid efter 08:00) och alla tider efter 20:00 (även med starttid innan 20:00) samt alla tider lördagar och söndagar. 
> Morgontid som startar 08:00 vill jag ha med. Även utesluta stopptid 20:00 men ta med tider \> 20:00.

Mvh 
Henrik  :)

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

## #5 — devotion, 2009-09-28T17:21Z

Ingen? :)  

Mvh
Henrik

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

## #6 — devotion, 2009-10-13T11:08Z

Please...

  :)

Mvh
Henrik

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

## #7 — adde2, 2009-10-17T16:36Z

> **[devotion skrev:](https://www.webforum.nu/p/1481999)**
>
> Hej igen!
> 
> Hur ändrar man villkoret till detta:
> 
> Ta med alla tider som hänför sig till innan 08:00 (även med stopptid efter 08:00) och alla tider efter 20:00 (även med starttid innan 20:00) samt alla tider lördagar och söndagar. 
> Morgontid som startar 08:00 vill jag ha med. Även utesluta stopptid 20:00 men ta med tider \> 20:00.
> 
> 
> Mvh 
> Henrik  :)

Om jag har försått villkoret rätt så bör följande funka (sql server 2008)

1\. Alla tider som startar innan kl. 08:00
2\. Alla tider som slutar efter kl. 20:00
3\. Alla tider på helger

Tar även med dem som böjar på kvällen och slutar på morgonen.

```
select * from mytimetable
where cast(starttime as time) < '08:00' or cast(stoptime as time) > '20:00'
or DATENAME(dw, starttime) in ('Saturday', 'Sunday') 
or DATENAME(dw, stoptime) in ('Saturday', 'Sunday') 
or DATEPART(d, starttime) <> DATEPART(d, stoptime)
```

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

## #8 — devotion, 2009-10-18T06:58Z

> **[adde2 skrev:](https://www.webforum.nu/p/1484435)**
>
> Om jag har försått villkoret rätt så bör följande funka (sql server 2008)
> 
> 1\. Alla tider som startar innan kl. 08:00
> 2\. Alla tider som slutar efter kl. 20:00
> 3\. Alla tider på helger
> 
> Tar även med dem som böjar på kvällen och slutar på morgonen.
> 
>
>
> ```
> select * from mytimetable
> where cast(starttime as time) < '08:00' or cast(stoptime as time) > '20:00'
> or DATENAME(dw, starttime) in ('Saturday', 'Sunday') 
> or DATENAME(dw, stoptime) in ('Saturday', 'Sunday') 
> or DATEPART(d, starttime) <> DATEPART(d, stoptime)
> ```

Hej,

Tack!

Jag skall testa detta!

 Mvh
Henrik

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

## #9 — devotion, 2009-10-18T20:40Z

Hej igen!

Har testat:

```
select 
	DATENAME(dw, startDate) + ' / ' + Convert(varChar(5), startDate, 108) AS [Start (Dag/tid)], 
	DATENAME(dw, stopDate) + ' / ' + Convert(varChar(5), stopDate, 108) AS [Stopp (Dag/tid)]
from tblTime
where (DATEPART(hh, startdate) <= 8 or DATEPART(hh, stopdate) > 20)
	or DATENAME(dw, startdate) in ('Saturday', 'Sunday') 
	or DATENAME(dw, stopdate) in ('Saturday', 'Sunday') 
	or DATEPART(d, startdate) <> DATEPART(d, stopdate)

/*
Ta med alla tider som hänför sig till innan/eller 08:00 (även med stopptid efter 08:00) 
och alla tider efter 20:00 (även med starttid innan 20:00) 
samt alla tider lördagar och söndagar.
Morgontid som startar 08:00 vill jag ha med. 
Även utesluta stopptid 20:00 men ta med tider > 20:00.

1. Alla tider som startar innan kl. 08:00 eller kl 08:00 ( <= 8)
2. Alla tider som slutar efter kl. 20:00
3. Alla tider på helger

*/
```

Nu kör jag SQL 2005, vilket gör att jag inte har tillgång till time?

Det blir ju 'nästan' rätt. Men en tid som börjar 08:50, tas ju med, vilket den inte skall göra. Endast tider innan 08:00 eller tider 08:00 prick, skall tas med.
(se bild)
Kan man lösa det i SQL 2005?

Mvh
Henrik

Bilagor:

- [sql.png](https://www.webforum.nu/a/20935.png)

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

## #10 — Peter S, 2009-10-19T08:56Z

```
...
where
    DATEPART(hh, startdate) < 8 
    or (DATEPART(hh, startdate) = 8 and DATEPART(mi, startdate) = 0)
    or DATEPART(hh, stopdate) > 20)
    or DATENAME(dw, startdate) in ('Saturday', 'Sunday') 
    or DATENAME(dw, stopdate) in ('Saturday', 'Sunday') 
    or DATEPART(d, startdate) <> DATEPART(d, stopdate)
```

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/180337-ta-ut-tider-före-08-00-och-tider-efter-20-00-samt-alla-tider-på-helger
