webForumDet fria alternativet

Representera säsonger med datumcykler i MySQL/PHP

3 svar · 636 visningar · startad av Fia

FiaMedlem sedan apr. 20042 994 inlägg
#1

Jag har en fråga angående bästa lösningen för att representera säsonger i en databastillämpning, vet inte riktigt om det hamnar under Databashanterare eller PHP.

Säg att en blomma blommar mellan mitten på april till slutet av maj, varje år. Om man har en MySQL-databas full med blommor och deras blomningsperioder, och vill kunna visa på en hemsida vilka blommor som blommar just nu och vilka som strax kommer blomma etc, finns det några bra lösningar för att hantera återkommande cykler? Vissa blommar t ex mellan månad 11 och månad 02. Finns det några smarta inbyggda format i MySQL eller funktioner i PHP som skulle vara optimala för det här?

tydalMedlem sedan juni 20034 013 inlägg
#2

Om det alltid är hela månader så känns det som det enklaste är att lagra månader med datatypen set:

sasong set('jan','feb','mar','apr','maj','jun','jul','aug','sep','okt','nov','dec')

Men i och med att du skriver mitten av april som exempel kanske du behöver ange datum. I så fall rekommenderar jag (i och med att vi inte ska blanda in år) att du kan ange fler säsonger för varje blomma och början av november till slutet av februari anges som 11-01 till 12-31 samt 01-01 till 03-01.

aasahMedlem sedan mars 20034 471 inlägg
#3

Varför inte lagra blommor i en tabell och Blomningssäsonger i en annan där du anger start och slut i datum? Genom att bortse från det inmatade året kan du använda datumfunktionerna i MySQL till att se vilka som blommar nu (idag är mellan StartDag och SlutDag), en månad fram/bak et.c.

Visserligen måste du ange datumen med år, men det går att bortse från året med lite trixande. Du kan tex plocka ut (ur databasen) månaden och dagen och sätta ihop det till ett datum som har innevarande år. Om du gör det med både start och slutdag kan du lätt se var idag är i förhållande till varje blommas perioder. Om någon blomma har mer än en blomperiod på ett år är det bara att lagra infon på två rader om de två blomperioderna.

Du kan ju göra en matchning mellan "mitten av april" som xx0415, "början av maj" som xx0507 et.c. Dvs bestämma något datum som matchar den ungefärliga beskrivningen av var i månaden vi är.

FiaMedlem sedan apr. 20042 994 inlägg
#4

Tack för era lösningar! Ska se när jag får tid att testa dem. Skönt att ha några lösningsförslag färdiga tills dess iaf. :)

132 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)