pepparMedlem sedan dec. 2001873 inlägg 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.
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 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!
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
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.