webForumDet fria alternativet

Visa efter månad

13 svar · 558 visningar · startad av casca

cascaMedlem sedan feb. 20005 891 inlägg
#1

Har en MySQL-tabell där varje post lagras med datum.. En liten enkel kalender. Datumet sparas som Y-m-d, t.ex 2005-01-01 som "date" i databasen.. Om jag nu vill visa t.ex alla poster under en viss månad, hur gör jag då?

sabbacusMedlem sedan juli 2002630 inlägg
#2

SELECT * FROM <min_tabel>l WHERE month(<datumkolumn>) = <månadsnummer>

cascaMedlem sedan feb. 20005 891 inlägg
#3

Men nu har jag ju inte separata fält för år, månad och dag, utan ett fält för datumet i formatet YYYY-MM-DD. Alltså blir det inte lika enkelt..

Jag funderade på om nåt här inte borde funka:

mysql_query("SELECT * FROM tabell WHERE datum = % . "-" . date("m") . "-" . % ORDER BY datum");

(Fast jag har nog rört till nånting, för det funkar inte..)

fiddlerMedlem sedan juli 20023 617 inlägg
#4

Jag använder WHERE datum LIKE till något liknande. Kanske en dum lösning...

cascaMedlem sedan feb. 20005 891 inlägg
#5

Ahaa! :birp :r

Var tvungen att glo lite i SQL-manualen.. Men tack ändå fiddler, hade noll koll på LIKE. ;)

Följande kod funkar ypperligt:

mysql_query("SELECT * FROM tabell WHERE datum LIKE '" . date("Y") . "-" .date("m"). "-%" . "' ORDER BY datum");
fiddlerMedlem sedan juli 20023 617 inlägg
#6

Va bra! :)

sabbacusMedlem sedan juli 2002630 inlägg
#7

casca skrev:

Men nu har jag ju inte separata fält för år, månad och dag, utan ett fält för datumet i formatet YYYY-MM-DD. Alltså blir det inte lika enkelt..

Har du ens testat min sql-sats? Den fungerar ypperligt på ett date-fält.

lunarmysMedlem sedan maj 200517 inlägg
#8

herrejävlar

vem i hela friden får för sig att använda _LIKE_ på ett DATE-fält!?

är det så att någon saknar hjärnceller?

sabbacus lösning är den rätta, om du endast är ute efter att matcha MÅNAD

om du vill matcha månad och år så finns DATE_FORMAT() som du kan använda

ibland inser man vilken tragisk värld man lever i

(edit: kanske ska påpeka att ja, sabbacus visade det här inlägget för mig, men nej, jag är inte samma person som sabbacus)

fiddlerMedlem sedan juli 20023 617 inlägg
#9

Re: herrejävlar

lunarmys skrev:

vem i hela friden får för sig att använda _LIKE_ på ett DATE-fält!?

är det så att någon saknar hjärnceller?

sabbacus lösning är den rätta, om du endast är ute efter att matcha MÅNAD

om du vill matcha månad och år så finns DATE_FORMAT() som du kan använda

ibland inser man vilken tragisk värld man lever i

(edit: kanske ska påpeka att ja, sabbacus visade det här inlägget för mig, men nej, jag är inte samma person som sabbacus)

Det positiva med wF är att man kan lära sig av andra. Man kan visa upp korkad kod och få ett förslag på en bättre lösning. Det negativa är att man ibland kan bli anklagad för att sakna hjärnceller bara för att man gör sitt bästa... :OO

cascaMedlem sedan feb. 20005 891 inlägg
#10

Re: herrejävlar

lunarmys skrev:

vem i hela friden får för sig att använda _LIKE_ på ett DATE-fält!?

är det så att någon saknar hjärnceller?

sabbacus lösning är den rätta, om du endast är ute efter att matcha MÅNAD

om du vill matcha månad och år så finns DATE_FORMAT() som du kan använda

ibland inser man vilken tragisk värld man lever i

(edit: kanske ska påpeka att ja, sabbacus visade det här inlägget för mig, men nej, jag är inte samma person som sabbacus)

Your holyness, visst, jag har ingen vidare koll på datatyper i MySQL, men du kanske ska använda dina social skills i att förklara lite bättre (gärna utan personangrepp också). Du skulle ju t.ex kunna börja med att föklara varför det nu är så galet att använda LIKE på ett date-fält? Just a few tips and pointers.

lunarmysMedlem sedan maj 200517 inlägg
#11

visst, ibland kanske man ska ta ett steg tillbaks å tänka efter innan man skriver, men ibland så är det bättre att bara skriva. när man känner sådan ilska t ex ;)

like ska man undvika så långt som möjligt, när det gäller _ALLA_ datatype, i _ALLA_ databaser. like är slött. end of story.

cascaMedlem sedan feb. 20005 891 inlägg
#12

lunarmys skrev:

när man känner sådan ilska t ex ;)

Du tar användandet av LIKE hårt?

@ndersMedlem sedan juni 200032 969 inlägg
#13

En anledning till att inte använda LIKE på datumfält; vet du säkert i vilket format datumet lagrats?

LIKE är en operator som används på strängdatatyper.

Det är alltid att rekommendera att du använder någon av de datum- eller tidfunktioner som finns att tillgå i MySQL. (och där har du en hel drös att välja på! :) )

http://dev.mysql.com/doc/mysql/en/date-and-time-functions.html

Mvh

lunarmysMedlem sedan maj 200517 inlägg
#14

casca, det gör jag, ja.

likadant när nybörjade får för sig att lagra filer i databasen. fast.. då blir jag nog ännu argare, om möjligt [klura]

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