select navn, year(NOW())-year(fdag), CEIL(day(NOW())-day(fdag)/365) as dage from tabel order by dage limit 5; ...eller noget i den stil. Jeg er lidt usikker på om det hedder day(); håber det hjælper dig i gang i det mindste.
Har fået den til at vælge to måneder nu. Men problemet er så, hvordan jeg skal sortere dem.. Altså i where delen står der bare, at month(birtday) skal være lig denne måned, eller næste måned.
Men så bliver der et sorteringsproblem. Og hvis det er lige her ved årsskifte, skal den jo lægge en til alderen og sådan lidt..
Har prøvet at køre den - men synes ikke rigtig den giver noget der giver mening desværre :(
Får bare alle navne ud og en alder (som ikke passer :) ) Skulle jo helst kun være dem der har fødselsdag inden for de næste XX dage. 30 eller sådan noget..
Men vidste ikke man kunne bruge if i sql sætninger.. Så dem vil jeg lige lege lidt med og så finde ud af om jeg kan finde ud af det..
Men spørgsmålet er, om det bliver en lidt for avanceret sætning. Det var en sætning jeg vil have på forsiden af min hjemmeside, og den skulle helst ikke bruge for mange kræfter..
Jeg har fået den til at virke med en måned af gangen.
SELECT name, (YEAR(CURRENT_DATE)-YEAR(birthday)) AS age, dayofmonth(birthday) as day, month(birthday) as month, year(current_date) as year, (month(birthday)=month(current_date) and dayofmonth(birthday)=dayofmonth(current_date)) as today FROM members WHERE MONTH(birthday) = MONTH(CURRENT_DATE) AND DAYOFMONTH(birthday)>=DAYOFMONTH(CURRENT_DATE) ORDER BY DAYOFMONTH(birthday) LIMIT 0,5
Det nævnte du ikke noget om i det omringelige beskrivelse :)
Helt præcist hvad er det du vil opnå?
Jeg har skrevet og testet SQL'en på en tabel med et date-felt, hvis du bruger et andet felt til at skrive fødselsdatoer ind, forstår jeg godt at det ikke virker..
Hvad angår performence tror jeg ikke at det er noget som er tungt for MySQL databasen.. den er ret sej sådan en :)
"Listen skal være sorteret efter hvem der næste gang har fødselsdag, og der skal vises 5 relationer." :)
Jeg har i min database en tabel indeholdende: navn : varchar(50) fødseldag : date
over nogle personer..
Fødselsdagen er givet som YYYY-MM-DD (eksempelvis som 1985-12-11)
Det jeg så gerne vil have min SQL spytter ud er en liste, som skal vises på forsiden af hjemmesiden, som en "Næste fødselsdage" rubrik.
hvori der står Eks.
28.12.05: Morten - 22 år 13.01.06: Jesper - 23 år 17.01.06: Kasper - 22 år 04.02.06: Jakob - 19 år 13.02.06: John Doe - 30 år
Det store problem er at få det lavet så det virker her omkring nytår.. Omkring nytår bliver der et problem med hvordan man skal sortere dem. Fra eksemplet ovenover har jeg svært ved at få Morten til at stå øverst..
Håber det er blevet lidt klarere nu..
Har ledt meget rundt på nettet.. Kan ikke forstå, hvorfor der ikke er andre der har haft brug for det samme.. :)
$c = mysql_query("SELECT * FROM `birth` WHERE DATE_FORMAT(birthday, '%m-%d') >= '". $nu ."' ". $search_operator ." DATE_FORMAT(birthday, '%m-%d') <= '". $fremtid ."' ORDER BY `birthday`") or die (mysql_error());
Nåede også til noget der lignede lidt det der i går :)
Men problemet er, at nu får jeg godt nok de næste ud der har fødselsdag..
Men lad os sige, at vi i dag kigger 30 dage frem (dvs. 09-01-06)..
Så er der en der har fødselsdag ex. den 15-12-05 og en som har 03-01-06.. Så bliver ham med fødselsdag den 03-01-05 vist først :(
Kan ikke lige gennemskue hvordan man kan fixe det.. Overvejer en eller anden løsninger, hvor man i sql'en laver "noget sql AS nextbirthday" og så order by nextbirthday :)
hmmm, skal jo så nok være 28 dage højest? Altså, hvis dato er d. 31-01, og der er 1 som har dag i februar, men 10 andre i marts, så springes februar jo over :O)
$sqlbirth = " SELECT id, `name`, `birthday`, (YEAR(CURRENT_DATE)-YEAR(birthday)) AS `age`, DATE_FORMAT(birthday, '%d-%m') as `visdato`, dayofmonth(birthday) as day, month(birthday) as month, month(current_date) as thismonth, year(current_date) as year, (month(birthday)=month(current_date) and dayofmonth(birthday)=dayofmonth(current_date)) as today
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.