Gå til innhold

Mysql-date-hvordan vise bursdager neste x dager?


Anbefalte innlegg

jeg har en tabell med personer og blant annet deres fødselsdato (date)

 

jeg vil vise de med bursdag de nærmeste x antall dagene

 

og bruker en slik spørring:

 

blablabla

Where fdato LIKE '____-01-20', fdato LIKE '____-01-21', osv....

 

Er det mulig å få result settet til å bli sortert slik at de matcher rekkefølgen i where-clausulen? (order by fdato blir ikke riktig siden ikke alle er født samme år) Eller må jeg fikse dette i etterkant i php?

Endret av oysteii
Lenke til kommentar
Videoannonse
Annonse

SELECT * FROM tabell 
WHERE DAYOFYEAR(fdato) >= DAYOFYEAR(NOW()) AND DAYOFYEAR(fdato) < DAYOFYEAR(NOW()) + 10 
ORDER BY DAYOFYEAR(fdato);

Tar alle bursdager 10 dager frem i tid.

 

Hmm... Den kommer til bugge når du nærmer deg årsskiftet. :hmm:

Endret av endrebjorsvik
Lenke til kommentar

Emnetittelen i denne tråden er lite beskrivende for trådens innhold og det er derfor ingen god emnetittel. Jo bedre og mer beskrivende emnetittelen er, jo lettere er det for andre å skjønne trådens innhold og det vil være lettere å treffe den riktige forumbrukeren med det rette svaret. Ber deg derfor om å endre emnetittel slik at du unngår at en moderator stenger tråden. Vennligst forsøk å tenk på dette neste gang du starter en tråd, og orienter deg om hva vår nettikette sier om dårlig bruk av emnetitler.

Bruk p_edit.gif-knappen i første post for å endre emnetittelen.

 

Tråden bryter også med tre-ords-regelen.

 

(Dette innlegget vil bli fjernet ved endring av emnetittel. Ikke kommenter dette innlegget, men ta gjerne og p_report.gif dette innlegget når tittelen er endret, så vil det bli fjernet.)

Lenke til kommentar
SELECT * FROM tabell 
WHERE DAYOFYEAR(fdato) >= DAYOFYEAR(NOW()) AND DAYOFYEAR(fdato) < DAYOFYEAR(NOW()) + 10 
ORDER BY DAYOFYEAR(fdato);

Tar alle bursdager 10 dager frem i tid.

 

Hmm... Den kommer til bugge når du nærmer deg årsskiftet. :hmm:

9634130[/snapback]

 

Jepp, funker glimrende fram til årskiftet. Men jeg prøvde med +200 uten å få med noen fra neste år så det funker ikke helt nei

Lenke til kommentar

Jeg endte opp med denne koden

 

$sortOrder = "ASC";
if(date('m', strtotime('now'))== 12)
{
$sortOrder = "DESC";
}

$query = "SELECT fdato " .
"From Medlem " .
"WHERE ( YEAR(DATE_ADD(CURRENT_DATE, INTERVAL 14 DAY))- YEAR(fdato) ) " .
"- ( RIGHT(DATE_ADD(CURRENT_DATE, INTERVAL 14 DAY),5) < RIGHT(fdato,5) ) " .
"> " .
"( YEAR(CURRENT_DATE) - YEAR(fdato) ) " .
"- ( RIGHT(CURRENT_DATE,5) < RIGHT(fdato,5) ) " .
"ORDER BY MONTH(fdato) " . $sortOrder . ", DAYOFMONTH(fdato)";

 

Men det måtte altså skrive litt php til for å ordne sorteringen rundt årsskiftet.

Går det ann å fikse det uten php? Og er dette mer effektivt enn å bruke LIKE='____-xx-yy'?

Endret av oysteii
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...