---
title: "Hämta de 5 datumen som är närmast dagens datum."
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/114102-hämta-de-5-datumen-som-är-närmast-dagens-datum"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "mattiasnordin"
published: "2004-10-21T17:59:10.000Z"
updated: "2004-10-29T04:36:57.000Z"
replies: 19
views: 414
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/114102-hämta-de-5-datumen-som-är-närmast-dagens-datum"
---

# Hämta de 5 datumen som är närmast dagens datum.

## #1 — mattiasnordin, 2004-10-21T17:59Z

Hmmm... Hur får jag ut 5 poster som är närmast dagens datum ur min access 2003 databas?

Datumen är i datumformat.

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

## #2 — @nders, 2004-10-21T18:03Z

```
SELECT TOP 5 DateDiff('d', [i]datumfält[/i], now()), * FROM tbl ORDER BY 1
```

Du kan köra på minuter eller sekunder också om du vill det, det är bara att ändra i DateDiff.

mvh

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

## #3 — mattiasnordin, 2004-10-21T18:13Z

@nders, du är verkligen överallt. \*ler\*

Ska testa. Tack. Tänkte inte på datediff.

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

## #4 — mattiasnordin, 2004-10-21T18:15Z

Hmmm.... om vi vill krångla till det då. 

Låt oss säga att jag vill ha med de 2 senaste raderna också. Dvs de 2 som nyligen har passerats.

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

## #5 — @nders, 2004-10-21T18:31Z

hmm... Jag hade nog gjort det med en UNION.

```
SELECT TOP 2 0, * FROM tbl WHERE [i]datumfält[/i] < now() ORDER BY [i]datumfält[/i] DESC
UNION ALL
SELECT TOP 5 DateDiff('d', [i]datumfält[/i], now()), * FROM tbl ORDER BY 1
```

> @nders, du är verkligen överallt. \*ler\*

A man's gotta do what a man's gotta do. ;)

mvh

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

## #6 — Jesper T, 2004-10-21T18:40Z

Kan man inte använda BETWEEN istället, så slippar man göra en UNION?

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

## #7 — @nders, 2004-10-21T18:44Z

hmm... Det går säkert. Men BETWEEN vadå? :)

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

## #8 — mattiasnordin, 2004-10-21T18:44Z

Otroligt sexigt. Fungerar klockrent. 
Men det är över min kompetens att förstå hur det fungerar... hi hi...

Bussigt :)

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

## #9 — @nders, 2004-10-21T18:47Z

> Men det är över min kompetens att förstå hur det fungerar

```
Hämta de två senaste posterna som har datum tidigare än nu
LÄGG IHOP
Hämta de fem poster med minst tidsskillnad från nu
```

 ;-)

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

## #10 — mattiasnordin, 2004-10-21T18:53Z

Men jag har ett problem... Sorry... 

Sorteringen fungerar inte riktigt

```
	sql = " SELECT TOP 2 0, * FROM T_aktiviteter WHERE fran_datum < now() ORDER BY fran_datum DESC "
	sql = sql &" UNION ALL "
	sql = sql &" SELECT TOP 5 DateDiff('d', fran_datum, now()), * FROM T_aktiviteter ORDER BY 1 "
```

Returnerar 

21 okt
20 okt
21 okt
20 okt 
20 okt
 
19 okt
17 okt

Hmmm ????

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

## #11 — @nders, 2004-10-21T18:56Z

Det är inte så konstigt. Det är resultatet av en SQL-fråga, och under det resultatet av en annan. Sorteringen får du leka med själv. ;)

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

## #12 — mattiasnordin, 2004-10-21T19:07Z

Jag trodde att man skulle kunna göra 

SELECT TOP 5 DateDiff('d', fran_datum, now()), \* FROM T_aktiviteter ORDER BY fran_datum DESC 

Men det vill sig inte.  Data type mismatch in criteria expression.

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

## #13 — mattiasnordin, 2004-10-22T07:18Z

Ledsen @nders. Men jag förstår min fortfarande inte på hur man sorterar i frågan ovan. Kan du hjälpa mig ?

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

## #14 — @nders, 2004-10-22T07:25Z

Jag skulle nog ha provat så här:

```
	sql = "SELECT * FROM (SELECT TOP 2 0, * FROM T_aktiviteter WHERE fran_datum < now() ORDER BY fran_datum DESC "
	sql = sql &" UNION ALL "
	sql = sql &" SELECT TOP 5 DateDiff('d', fran_datum, now()), * FROM T_aktiviteter ORDER BY 1) ORDER BY fran_datum DESC"
```

Frågan som den är nu tillåter att det kommer dubbletter. Kommer en post med i resultatet från fråga ett, kan den komma med i resultatet från fråga 2. Om du vill undvika det, byt från UNION ALL till UNION.

mvh

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

## #15 — mattiasnordin, 2004-10-22T07:28Z

Ska prova lite senare. Tack. Svårt det där ;)

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

## #16 — mattiasnordin, 2004-10-22T13:06Z

> Frågan som den är nu tillåter att det kommer dubbletter. Kommer en post med i resultatet från fråga ett, kan den komma med i resultatet från fråga 2. Om du vill undvika det, byt från UNION ALL till UNION.

Det blev bättre men jag har fortfarande dubletter, oavsätt hur jag använder UNION eller UNION ALL.

Ser nu ut så här:

21 okt a
21 okt a
20 okt b
20 okt b
20 okt c

19 okt d
17 okt e

Hilfe :)

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

## #17 — @nders, 2004-10-22T13:08Z

Har du inte flera poster för de datumen det blir dubletter då?

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

## #18 — mattiasnordin, 2004-10-22T13:30Z

Den 20 okt så är finns det en aktivitet som är bowling. Denna har jag en dublett på fastän det bara finns en bowlingaktivitet i databasen.

Det finns förövrig bara 6 poster ifyllda i databasen och frågan returnerar 7 st svar.

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

## #19 — @nders, 2004-10-22T13:32Z

Nu förstår jag. Det är nollan som ställer till det, som gör att det det inte är likadana poster i din union. Prova detta:

```
	sql = "SELECT * FROM (SELECT TOP 2 DateDiff('d', fran_datum, now()),  * FROM T_aktiviteter WHERE fran_datum < now() ORDER BY fran_datum DESC "
	sql = sql &" UNION"
	sql = sql &" SELECT TOP 5 DateDiff('d', fran_datum, now()), * FROM T_aktiviteter ORDER BY 1) ORDER BY fran_datum DESC"
```

Mvh

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

## #20 — @nders, 2004-10-29T04:36Z

Hur gick det? :)

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/114102-hämta-de-5-datumen-som-är-närmast-dagens-datum
