webForumDet fria alternativet

Hämta post närmast dagens datum

4 svar · 430 visningar · startad av peppar

pepparMedlem sedan dec. 2001873 inlägg
#1

Jag vill hämta TOP 1 från en tabell i en access databas där jag hämtar ut den post som ligger närmast dagens datum

Datumet sparas YYYY-MM-DD

Som det ser ut nu så gör jag såhär...

SELECT TOP 1 tbl_events.*
FROM tbl_events
WHERE (evn_start > #5/31/2010#)
ORDER BY evn_start DESC

Men det är ju inte riktigt rätt... Men eftersom fältet evn_start lika gärna kan vara om ett halvår eller imorgon, eller idag så vet jag inte hur jag skall fråga mot databasen för att få ut det direkt i frågan.

nitro2k01Medlem sedan aug. 20039 342 inlägg
#2

Prova:

SELECT TOP 1 tbl_events.*
FROM tbl_events
ORDER BY ABS(DATEDIFF(day, evn_start, #5/31/2010#)) ASC

Jag vet dock inte hur väl Access klarar av att köra den frågan.

Peter SMedlem sedan dec. 20025 483 inlägg
#3

Varför tycker du inte att det fungerar? Det som möjligen skulle kunna vara knepigt är om du har flera poster med samma värde i evn_start. Men om det inte spelar någon roll vilken av dem som hämtas så är det bara att köra!

nitro2k01Medlem sedan aug. 20039 342 inlägg
#4

Jag kanske missuppfattade frågan... Min kod ska alltså leta upp det närmaste datumet, båda framåt och bakåt i tiden. evn_start = 30/5 slår högre än 2/6 t ex.

Men, peppar, i din ursprungliga fråga vill du väl ha ORDER BY ... ASC? Som fråga är utformad hämtar du ju det datum som är längst fram i tiden.

pepparMedlem sedan dec. 2001873 inlägg
#5

Peter S skrev:

Varför tycker du inte att det fungerar? Det som möjligen skulle kunna vara knepigt är om du har flera poster med samma värde i evn_start. Men om det inte spelar någon roll vilken av dem som hämtas så är det bara att köra!

Nej, eller ja.. jag vet inte. Eller jo förresten. Jag är nog ute och cyklar en aning. Jag borde nog kanske förtydliga. Varje post innehåller EVN_START och EVN_END, om dagens datum ligger mitt i en posts START och END intervall, bör den ju rimligtvis (i det här fall iaf)prioriteras att hämtas ut mot en post som har start IDAG och oavsett slutdatum...

Nej, det spelar egentligen ingen roll om det finns flera poster med samma värde i evn_start.

nitro2k01 skrev:

Jag kanske missuppfattade frågan... Min kod ska alltså leta upp det närmaste datumet, båda framåt och bakåt i tiden. evn_start = 30/5 slår högre än 2/6 t ex.

Men, peppar, i din ursprungliga fråga vill du väl ha ORDER BY ... ASC? Som fråga är utformad hämtar du ju det datum som är längst fram i tiden.

Japp, ASC, men borde det spela roll när jag kör TOP 1? Borde ju kunna skippa den helt iofs. Däremot verkar access inte gilla uppbyggnaden av datediffen.

127 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
123 ms — hämta tråd, inlägg och bilagor (db)