/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Problem mht. datoer
Fra : Kenneth


Dato : 28-01-03 17:06

Hej NG!

Jeg har et lille, måske simpel problem. Hvis man nu har en lille database
der ser således ud:

id navn født(datotype)
1 Henrik 15-11-1971
2 Mads 02-10-1975
3 Mette 22-05-1980
4 Ib 23-02-1964

Så til spørgsmålet: Hvordan får man listet de næste 3 personer der har
fødselsdag ud fra dagsdato? Jeg går ud fra, at selve årstallet behøver man
ikke, men den er der altså! :)

Resultatet skulle se således ud:

Ib 23-02-1964
Mette 02-10-1975
Mads 02-10-1975

Kan man lave det hele med én SQL-forespørgsel? Eller kan der laves en lille
smart funktion? Det med datoer er nemlig ikke lige min stærke side! :)

Håber nogle kan hjælpe mig på rette vej...

Kenneth



 
 
Ole Dalsgaard Jensen (28-01-2003)
Kommentar
Fra : Ole Dalsgaard Jensen


Dato : 28-01-03 17:59

Hej Kenneth

Prøv at lave en forespørgsel i stil med:
SELECT * FROM tabelNavn ORDER BY MONTH(født), DAY(født)
eventuelt
SELECT * FROM tabelNavn WHERE MONTH(født) * DAY(født) >= MONTH(Date()) *
DAY(Date()) ORDER BY MONTH(født), DAY(født)
hvis du kun ønsker dem, der har fødselsdag efter dags dato.

Med venlig hilsen

Ole Dalsgaard Jensen
ole.dalsgaard@stofanet.dk

"Kenneth" <kenneth@nospam.witte.dk> skrev i en meddelelse
news:pUxZ9.46772$Hl6.5989403@news010.worldonline.dk...
> Hej NG!
>
> Jeg har et lille, måske simpel problem. Hvis man nu har en lille database
> der ser således ud:
>
> id navn født(datotype)
> 1 Henrik 15-11-1971
> 2 Mads 02-10-1975
> 3 Mette 22-05-1980
> 4 Ib 23-02-1964
>
> Så til spørgsmålet: Hvordan får man listet de næste 3 personer der har
> fødselsdag ud fra dagsdato? Jeg går ud fra, at selve årstallet behøver man
> ikke, men den er der altså! :)
>
> Resultatet skulle se således ud:
>
> Ib 23-02-1964
> Mette 02-10-1975
> Mads 02-10-1975
>
> Kan man lave det hele med én SQL-forespørgsel? Eller kan der laves en
lille
> smart funktion? Det med datoer er nemlig ikke lige min stærke side! :)
>
> Håber nogle kan hjælpe mig på rette vej...
>
> Kenneth
>
>



Kenneth (28-01-2003)
Kommentar
Fra : Kenneth


Dato : 28-01-03 18:22

> SELECT * FROM tabelNavn ORDER BY MONTH(født), DAY(født)
> eventuelt
> SELECT * FROM tabelNavn WHERE MONTH(født) * DAY(født) >= MONTH(Date()) *
> DAY(Date()) ORDER BY MONTH(født), DAY(født)
> hvis du kun ønsker dem, der har fødselsdag efter dags dato.
>
Tusind mange tak! Lige hvad jeg manglede - vidste ikke det kunne gøres så
simpelt! :)




Torben Brandt (28-01-2003)
Kommentar
Fra : Torben Brandt


Dato : 28-01-03 18:57

Ole Dalsgaard Jensen wrote in dk.edb.internet.webdesign.serverside.asp:
> "Kenneth" <kenneth@nospam.witte.dk> skrev i en meddelelse
> news:pUxZ9.46772$Hl6.5989403@news010.worldonline.dk...
> > id navn født(datotype)
> > 1 Henrik 15-11-1971
> > 2 Mads 02-10-1975
> > 3 Mette 22-05-1980
> > 4 Ib 23-02-1964
> >
> > Så til spørgsmålet: Hvordan får man listet de næste 3 personer der har
> > fødselsdag ud fra dagsdato? Jeg går ud fra, at selve årstallet behøver man
> > ikke, men den er der altså! :)

> SELECT * FROM tabelNavn WHERE MONTH(født) * DAY(født) >= MONTH(Date()) *
> DAY(Date()) ORDER BY MONTH(født), DAY(født)
> hvis du kun ønsker dem, der har fødselsdag efter dags dato.

Du kan ikke bare gange måned med dag, for i januar vil det give 1 til 31, og i
februar vil det give 2, 4, 6, ... Dvs 3 januar er efter 1 februar!
I stedet må du mene MONTH(født) * 31 + DAY(født) >= MONTH(date()) * 31 +
DAY(date()). Jeg ved ikke om der er en DayOfYear-function, med det er jo det vi
prøver at lave.

Og så har vi heller ikke taget højde for at hvis man står på den 31 december,
så er der jo ikke nogle, der har fødselsdag på en dato senere på året... Så der
ville ikke komme nogle ud!

I stedet for SELECT * kunne du også bare nøjes med SELECT TOP 3 <feltnavne>, så
trækker du kun det ud du skal bruge.

mvh Torben

--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP ???
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Ole Dalsgaard Jensen (28-01-2003)
Kommentar
Fra : Ole Dalsgaard Jensen


Dato : 28-01-03 19:53


"Torben Brandt" <torben@actuar.dk> skrev i en meddelelse
news:b16g8q$726$1@sunsite.dk...
> Ole Dalsgaard Jensen wrote in dk.edb.internet.webdesign.serverside.asp:
> > SELECT * FROM tabelNavn WHERE MONTH(født) * DAY(født) >= MONTH(Date())
*
> > DAY(Date()) ORDER BY MONTH(født), DAY(født)
> > hvis du kun ønsker dem, der har fødselsdag efter dags dato.
>
> Du kan ikke bare gange måned med dag, for i januar vil det give 1 til 31,
og i
> februar vil det give 2, 4, 6, ... Dvs 3 januar er efter 1 februar!
> I stedet må du mene MONTH(født) * 31 + DAY(født) >= MONTH(date()) * 31 +
> DAY(date()). Jeg ved ikke om der er en DayOfYear-function, med det er jo
det vi
> prøver at lave.
>
> Og så har vi heller ikke taget højde for at hvis man står på den 31
december,
> så er der jo ikke nogle, der har fødselsdag på en dato senere på året...
Så der
> ville ikke komme nogle ud!
>
> I stedet for SELECT * kunne du også bare nøjes med SELECT TOP 3
<feltnavne>, så
> trækker du kun det ud du skal bruge.
>
> mvh Torben

Hej Torben
Du har selvfølgelig ret i dine betragtninger. Mit svar var "rystet ud af
ærmet" uden nærmere eftertanke.

En bedre løsning kunne være:
SELECT * FROM tabelNavn Order By DatePart('y',[født])
eller
SELECT * FROM tabelNavn WHERE DatePart('y',[født]) >= DatePart('y',Date())
Order By DatePart('y',[født])

mvh. Ole





Ole Dalsgaard Jensen (28-01-2003)
Kommentar
Fra : Ole Dalsgaard Jensen


Dato : 28-01-03 20:01


"Ole Dalsgaard Jensen" <ole.dalsgaard@stofanet.dk> skrev i en meddelelse
news:3e36d16f$0$24687$ba624c82@nntp02.dk.telia.net...
> Hej Torben
> Du har selvfølgelig ret i dine betragtninger. Mit svar var "rystet ud af
> ærmet" uden nærmere eftertanke.
>
> En bedre løsning kunne være:
> SELECT * FROM tabelNavn Order By DatePart('y',[født])
> eller
> SELECT * FROM tabelNavn WHERE DatePart('y',[født]) >= DatePart('y',Date())
> Order By DatePart('y',[født])

Og så lige denne tilføjelse, hvis man ønsker at se alle der har fødselsdag
de næste 10 dage:
SELECT * FROM tabelNavn WHERE DatePart('y',[født]) BETWEEN
DatePart('y',Date()) And DatePart('y',Date())+10
Order By DatePart('y',[født])

mvh. Ole




Søg
Reklame
Statistik
Spørgsmål : 177559
Tips : 31968
Nyheder : 719565
Indlæg : 6408936
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste