---
title: "Datum närmast dagensdatum och tid"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/144295-datum-närmast-dagensdatum-och-tid"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "Addeladde"
published: "2006-03-21T15:45:04.000Z"
updated: "2006-05-02T21:46:51.000Z"
replies: 7
views: 531
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/144295-datum-närmast-dagensdatum-och-tid"
---

# Datum närmast dagensdatum och tid

## #1 — Addeladde, 2006-03-21T15:45Z

Hej

Jag vill få fram den post i databasen där ett datum ligger närmast dagens datum. I första hand ska den öppna datum som kommer men finns inget sådant så ska den öppna ett tidigare datum.

ex.

```
 Select top 1 datum from kalender where datum ........
```

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

## #2 — LarsG, 2006-03-21T16:28Z

```
select min(datum)
 from kalender
 where datum > date() -- getdate() etc beroende på dbms
union all
 select max(datum)
    from kalender
  where datum < date()
   and not exists
  (select * 
      from kalender
     where datum > date())
```

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

## #3 — Addeladde, 2006-03-22T10:14Z

Försöker få till det men lyckas inte så bra. Det är lite fler tabeller.
Anvandare, lektioner och kursmedlemskap.
Det jag vill åstadkomma är att öppna upp den den lektion med närmast datum helst fram i tiden. Lektionen ska sedan tillhöra en kurs som användaren är kopplad till.
Databasen är access.

```
SELECT min(l.lektionDatum), k.kursID 
FROM kurser as k, kursmedlemskap as km, lektioner 
WHERE km.anvandarID= 1 
And km.kursID = k.kursID 
And k.kursID = l.kursID 
And l.lektiondatum > date() 
union all 
select max(lektiondatum) 
from lektioner where lektiondatum < date() 
and not exists (select * from lektioner where lektiondatum > date())
```

> Antalet kolumner i tabellerna eller frågorna i unionsfrågan stämmer inte överens.

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

## #4 — @nders, 2006-03-22T10:27Z

Felmeddelandet är väl ganska tydligt? 

I den första select-frågan hämtar du två fält / värden, och i den andra bara ett.

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

## #5 — Addeladde, 2006-03-22T11:33Z

Tror jag fattat lite mer hur det funkar men behöver nog lite förklaringar.
Först och främst den sista delen i koden "if not exists" hämtar inte den sql-satsen alla lektioner där datumet är mindre. Behöver bara få kursID på den kurs som har en lektion närmast. 

Nu har jag koden

```
Select min(l.lektionDatum), k.kursID 
From kurser as k, kursmedlemskap as km, lektioner as l 
Where km.anvandarID= 1 
And km.kursID = k.kursID 
And k.kursID = l.kursID 
And l.lektiondatum > date() 
union all 
Select max(l.lektionDatum), k.kursID 
From kurser as k, kursmedlemskap as km, lektioner as l 
Where km.anvandarID= 1 
And km.kursID = k.kursID 
And k.kursID = l.kursID 
And l.lektiondatum < date() 
And not exists (Select l.lektionDatum, k.kursID 
From kurser as k, kursmedlemskap as km, lektioner as l 
Where km.anvandarID= 1 
And km.kursID = k.kursID 
And k.kursID = l.kursID 
And l.lektiondatum > date())
```

Nu får jag felmeddelandet:

> Du försökte köra en fråga med en mängdfunktion som inte innehöll det angivna uttrycket 'kursID'.

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

## #6 — Addeladde, 2006-05-02T17:54Z

Ingen?

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

## #7 — Addeladde, 2006-05-02T21:27Z

Tog bort min() och använde top 1 och order by istället.

```
sqlString = "Select top 1 l.lektionDatum, l.kursID " &_
"From kursmedlemskap as km, lektioner as l " &_
"Where km.kursID = l.kursID " &_
"And km.anvandarID = 1 " &_
"And l.lektionDatum > #"& now &"# " &_
"Order By l.lektionDatum Desc " &_
"Union All " &_
"Select top 1 l.lektionDatum, l.kursID " &_
"From kursmedlemskap as km, lektioner as l " &_
"Where km.kursID = l.kursID " &_
"And km.anvandarID = 1 " &_
"And l.lektionDatum < #"& now &"# " &_
"And not exists (Select l.lektionDatum from kursmedlemskap as km, lektioner as l Where km.anvandarID = 1 And km.kursID = l.kursID And l.lektiondatum > #"& now &"#) " &_
"Order By l.lektionDatum ASC "
```

Blir det någon skillnad?

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

## #8 — Addeladde, 2006-05-02T21:46Z

Då verkar det bli problem när man har desc i ena frågan och asc i den andra frågan.

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/144295-datum-närmast-dagensdatum-och-tid
