Avatar billede schwaner Nybegynder
30. januar 2004 - 13:36 Der er 19 kommentarer

Sortering af poster i rækkefølge tættest på dags dato

Hej med jer.

Jeg er ude i lidt af en funktion og tænkte I måske kunne hjælpe. Jeg skal bruge en SQL-sætning der sortere (ORDER BY) udfra hvilken start_dato der er tættest på dags dato.

Jeg har forløbig følgende:
select id, from annon_tekstlink_annonce where start_dato < GETDATE() AND udlobsdato > GETDATE()

Hvis man så kan sige noget al'a ...
where day(startdato) tættest på day(getdate()) DESC
og samtidig præsentere dem baglæns så den dag der er længst fra Getdate() kommer først, så ville jeg være en lykkelig mand.
Avatar billede madschristensen Nybegynder
30. januar 2004 - 13:42 #1
Der er ikke noget der hedder GETDATE()... Det hedder bare DATE()

SQL="SELECT ... FROM ... WHERE start_dato < '" & date() & "' and udlobsdato > '" & date() & "' order by startdato;"
Avatar billede schwaner Nybegynder
30. januar 2004 - 13:44 #2
OK. Men hvis jeg benytter order by startdato, tager den jo bare den ældste/nyeste først og ikke nødvendigvis den der er længst fra dags dato. Nopgen forslag til at knække den?
Avatar billede madschristensen Nybegynder
30. januar 2004 - 13:46 #3
Den ældste er vel den der er længst fra dags dato ?
Avatar billede stingbat Nybegynder
30. januar 2004 - 13:46 #4
madschristensen:
Gør der - kommer blot an på hvilken type database der ligger bag ;-)

schwaner:
Mht. datoerne, der kan du evt. benytte DATEDIFF

select id, from annon_tekstlink_annonce where start_dato < GETDATE() AND udlobsdato > GETDATE() order by datediff(d, start_dato, udlobsdato) desc
Avatar billede madschristensen Nybegynder
30. januar 2004 - 13:47 #5
Enig.!
Avatar billede madschristensen Nybegynder
30. januar 2004 - 13:51 #6
men hvilken base er det så ?
Avatar billede stingbat Nybegynder
30. januar 2004 - 13:52 #7
MSSQL efter hvad jeg ved....? But correct me if I'm wrong...
Avatar billede netro Nybegynder
30. januar 2004 - 14:00 #8
Så er det korrekt at anvende GetDate().
Avatar billede schwaner Nybegynder
30. januar 2004 - 14:02 #9
madschristensen - En MS-SQL.
Avatar billede madschristensen Nybegynder
30. januar 2004 - 14:03 #10
Oki.... Så er jeg også klogere ;O))

Men jeg holder stadig på, at den ældste dato er den der er længst fra d.d.
Avatar billede schwaner Nybegynder
30. januar 2004 - 14:05 #11
stingbat - Jeg har forsøgt dit forslag men får 01-01-2004 før 30-01-2004. Det er nwetopn mening at 30-01-2004 skal vælges før 01-01-2004 indtil den vi runder 01-02-2004
Avatar billede schwaner Nybegynder
30. januar 2004 - 14:06 #12
madschristensen - Det skal være udfra dags tallet i datoen. Jeg er ikke sikker på om det er nævnt før (det går lidt stærkt lige nu).
Avatar billede stingbat Nybegynder
30. januar 2004 - 14:08 #13
Hov... var vidst også iflg. dags dato, ik?

datediff(d, start_dato, date()) desc
eller getdate()

Men du må lige prøve dig lidt frem... evt. bytte om på start_dato og date() ...
Avatar billede stingbat Nybegynder
30. januar 2004 - 14:10 #14
madschristensen:
Kommer jo også an på om den også skal checke i forhold til om den også skal checke før den dato?! *G*
Dermed holder datediff til formålet... Men ellers, så ville "order by start_date" skulle benyttes.... enten med eller uden "desc"
Avatar billede schwaner Nybegynder
30. januar 2004 - 14:14 #15
Har den:
datediff(d, day(start_dato), getdate()) asc

Tak for hjælpen.

Opret et svar hvis du/I skal have lidt points
Avatar billede stingbat Nybegynder
30. januar 2004 - 14:19 #16
day(start_dato) ?
"datediff(d, start_dato, getdate()) asc" burde være nok - eftersom den finder antallet af dage i mellem...
Avatar billede schwaner Nybegynder
30. januar 2004 - 14:21 #17
Okay. det skal jeg lige have kigget på. Tror jeg for alvor kan bruge det til noget. Jeg vender tilbage...
Avatar billede madschristensen Nybegynder
30. januar 2004 - 14:30 #18
Stingbat - Det er nok fordi der er fredag og jeg kom sent i seng, men antallet af datediff d= antal dage mellem dags dato og den anden dato...

Når man så sortere (hvad enten der er den ene eller anden vej) vil resultatet vel blive det samme som forskellen mellem de samme to dato'er....
Avatar billede stingbat Nybegynder
30. januar 2004 - 14:33 #19
madschristensen:
Ved skam hvad funktionen gør - men ... kommer an på hvordan han benytter den, og hvordan den reagere i hans tilfælde (også som man ønsker det) ;)
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester