Avatar billede sumokadet Nybegynder
21. juli 2003 - 13:05 Der er 6 kommentarer og
1 løsning

Finde de næste fem fødselsdage - udvidet version

Jeg har oprettet dette spørgsmål igen for at kunne give flere point til den heldige vinder - i kan se det oprindelige spørgsmål på http://www.eksperten.dk/spm/308507.

Kort ønskede jeg bare en SELECT, der fandt de næste fem fødselsdage i en lille database over personer hvor disse simpelthen hver havde en 'date' tilknyttet (dennes navn er DATO). Mirakulix kom op med den her superkode:

select
  id,
  navn,
  dato,
IF (
  DAYOFYEAR( CONCAT( '2004-', MONTH(NOW()),'-', DAYOFMONTH(NOW()) )) <=
    DAYOFYEAR( CONCAT('2004-', MONTH(DATO),'-', DAYOFMONTH(DATO) ))
  ,
  DAYOFYEAR( CONCAT('2004-', MONTH(DATO),'-', DAYOFMONTH(DATO) ))
  -
  DAYOFYEAR( CONCAT( '2004-', MONTH(NOW()),'-', DAYOFMONTH(NOW()) ))
  ,
  366 -
  DAYOFYEAR( CONCAT( '2004-', MONTH(NOW()),'-', DAYOFMONTH(NOW()) ))
  +
  DAYOFYEAR( CONCAT('2004-', MONTH(DATO),'-', DAYOFMONTH(DATO) ))
    ) AS DAGETILDAG
from
  fodselsdage
order by DAGETILDAG LIMIT 5;

Jeg er så bare stødt ind i et problem - nogen af mine personer i adresse kartoteket har NULL som fødselsdato - eller rettere jeg kender ikke deres fødselsdato, og DAGETILDAG returnerer bare 0 i deres tilfælde... Jeg ønsker altså at den tager højde for dette og går uden om de personer der har NULL som fødselsdato...

Jeg gætter på der skal placeres en WHERE et eller andet sted - men kan ikke helt greje det...

Nogen gode forslag?
Avatar billede fixxxer Nybegynder
21. juli 2003 - 13:08 #1
WHERE dato <> null

?
Avatar billede fixxxer Nybegynder
21. juli 2003 - 13:09 #2
lidt et gæt, indsæt efter "from fodselsdage", måske endda som WHERE dato <> ""
Avatar billede sumokadet Nybegynder
21. juli 2003 - 13:14 #3
Tja, det var også cirka hvad jeg ville gætte på - men alt hvad jeg lavede gav SQL-fejl. Hvis jeg tilgengæld indsætter WHERE dato <> null efter FROM foedselsdage returnes bare ikke noget - men det giver ikke fejl :-D
Avatar billede fixxxer Nybegynder
21. juli 2003 - 13:20 #4
nu ved jeg ikke med din mySQL, men min giver tilsyneladende rækker uden en angivet datoværdi, værdien 0000-00-00, så måske skulle du prøve at trække dem ud som hedder WHERE dato <> "0000-00-00"
det kan jeg da se virker hos mig :)
Avatar billede sumokadet Nybegynder
21. juli 2003 - 13:31 #5
Yes - hvis man bare laver den meningsløse dato "0000-00-00" virker det uden problemer :-D tak for hjælpen - skriv et svar og så får du et par point...
Avatar billede fixxxer Nybegynder
21. juli 2003 - 20:36 #6
jamen kanon, held og lykke med projektet :)
Avatar billede fixxxer Nybegynder
22. juli 2003 - 21:11 #7
takker for point :)
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
Computerworld tilbyder specialiserede kurser i database-management

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