Hallo wahsaga,
Naja, Du kannst ja Nummer des Jahres und Monats der beiden Timestamps bestimmen und der Rest ist relativ simpel (Du hast 12 Monate pro Jahr, Jahre werden kontinuierlich gezählt).
Da explizit nach "existierenden" Monaten gefragt war, dürfen wir vielleicht annehmen, dass es nicht in jedem Monat Einträge gibt.
Wenn also nur für die "existierenden" Monate Links erzeugt werden sollen, dann wäre vielleicht erst mal eine Abfrage nach Jahr-Monat mit DISTINCT oder GROUP BY angebracht.
Das geht allerdings nur, wenn's DBMS- und keine POSIX-Timestamps sind - aus letzteren kann man nämlich nicht so ohne weiteres ablesen, in welchem Monat sie angegeben sind.
Ferner weiß ich nicht, inwiefern MySQL Datenfelder intelligent indizieren kann - wenn's wirklich viele Daten sind, sind Funktionen wie SELECT DISTINCT YEAR(datumsfeld), MONTH(datumsfeld) FROM tabelle
evtl. relativ langsam, weil sie einen Full Table Scan provozieren könnten - das müsste man mittels EXPLAIN mal überprüfen, ob MySQL intelligent genug ist, da einen Index zu verwenden.
Naja, Du bekommst dann genau die Information "Monat" und "Jahr" - d.h. Du kannst den Timestamp berechnen, der am 1. Tag des Monats um Mitternacht liegt und Du kannst den Timestamp berechnen, der am letzten Tag des Monats um 23:59:59 liegt - und alles, was zwischen den beiden Timestamps (einschließlich dieser beider) liegt, liegt innerhalb des Monats - MySQL kann ja Vergleiche sowohl auf Zahlenfelder als auch auf Datumsfelder durchführen (
WHERE feld >= anfang AND feld <= ende
).Wenn ein DBMS vorliegt, was solche Datumsfunktionen unterstützt, wäre eine Abfrage mittels YEAR() und MONTH() o.ä. vielleicht schöner, also sich Timestamps zusammenzubasteln.
Ja, das stimmt, gilt allerdings auch nur, wenn obige beide Bedingungen erfüllt sind (d.h. Datenbank-Timestamps + MySQL intelligent genug).
Viele Grüße,
Christian
"I have always wished for my computer to be as easy to use as my telephone; my wish has come true because I can no longer figure out how to use my telephone." - Bjarne Stroustrup