14. april 2008 - 13:33Der er
28 kommentarer og 2 løsninger
Udtræk på dato og dags dato
Hej.
Jeg har et felt i min tabel 'MinTabel' der hedder 'MinDato'. Jeg vil så gerne trække alle de records ud fra 'MinTabel' hvor 'MinDato' figurerer inden for en måned fra dags dato.
Ja, det det er fremadrettet, så +30 virker efter hensigten =) Men jeg glemte at sige at der gerne må ses bort fra årstallet, således at der kun bliver spurgt på dd/mm i MinDato. Kan man bruge en slags date function der?
Hvordan konkatinerer jeg de to værdier så det bliver en dato der kan bruges/forståes af between-sætningen, og hvad vil Access have først, dato eller måned?
Hvis du indsætter kriterier som f.eks. 15 under uftrykket med dato og 4 i udtrykket med måned, får du kun de poster, der er oprettet D 15. og i 4 måned uanset årstal.
Jeg tror ikke lige dette er en løsning lige til højrebenet, når du vil begrænse din søgning til kun at indeholde 30 dage fra en given kalenderdato og så vise disse fremadrettet uandet hvilket år der måtte gælde ...
Du søger i forhold til en heltalsværdi som i dag er 39553. til næste år vil den være 39918 ( 39553 + 365 ) o.s.v.
Du kan naturligvis eksperimenterer dig frem, og så fremskrive med eksempelvis et år ved hjælp af :
SELECT MinTabel.MinDato FROM MinTabel WHERE (((MinTabel.MinDato) Between Date() And Date()+30 Or (MinTabel.MinDato) Between Date()+365 And Date()+395));
jensen > Jeg har også svært ved at se, hvorfor man skulle isolere dato og måned. Så får man jo poster der måske ligger år tilbage. Se min bemærkning Kl 10:01:10.
Hmm.. Er lidt forvirret, det behøver ikke være vildt præcist, bare ca. 30 dage frem fra dags. Men forestille sig at vi skulle tjekke i en fødselsdagskalender om der var en der havde fødselsdag inden for de næste 30 dage, så ville en enkelt med føss d. 29. februar desværre aldrig optræde..
mugs-> Ok så holder jeg mig til den, jeg kan bare ikke helt få det til at virke endnu med de to DatePart. Jeg er ikke sikker på hvor jeg skal skal sætte det rundt om i sætningen:
SELECT MinTabel.MinDato FROM MinTabel WHERE (((MinTabel.MinDato) Between Date() And Date()+30));
Jeg ved det ikke endnu, for jeg kan ikke helt få den til at virke, den siger jeg har en syntaksfejl når jeg putter DatePart("d";Date();1;0) og DatePart("m";Date();1;0) ind i ovenstående sætning..
Det som Mugs forsøger at sige er, at du ikke umiddelbart kan benytte DatePart("d";Date();1;0) og DatePart("m";Date();1;0) i din Between sætning, fordi DatePart omsættes til en heltalsværdi, som ikke har sammenhæng med den heltalsværdi som er omtalt tidligere (15/04-2008 09:41:38).
Derfor skal du benytte denne :
SELECT MinTabel.MinDato FROM MinTabel WHERE (((MinTabel.MinDato) Between Date() And Date()+30));
som der allerede er ... det andet kan ikke lade sig gøre
Det jeg gerne vil er, at jeg har pesoner oprettet min database i [MinTabel], alle oprettet med fødselsdato - eks. '02-12-1965' - i kolonnen [Fodselsdag].
Det jeg så vil kunne, er at lave en forespørgsel der giver resultater på om der er nogen der har fødselsdag inden for de næste 30 dage.
Jeg ved ikke om man skal bruge DatePart, jeg er ikke bekendt med funktionen :-)
SELECT Format([MinDato],"dd/mm") AS Fødselsdag FROM MinTabel WHERE (((Format([MinDato],"dd/mm")) In (Format(Date(),"dd/mm"),Format(Date()+1,"dd/mm"),Format(Date()+2,"dd/mm"),Format(Date()+3,"dd/mm"),Format(Date()+4,"dd/mm"))));
SELECT Format([fødselsdag],"dd/mm") AS Fødselsdag1 FROM Tabel1 WHERE (((Format([fødselsdag],"dd/mm")) In (Format(Date(),"dd/mm"),Format(Date()+[Indtast antal dage],"dd/mm"))));
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.