Hallo, Gast! (Registrieren)

Letzte Ankündigung: MyBB 1.8.27 veröffentlicht (22.06.21)


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste
MYSQL Daten nach Monat suchen?
#1
Hiho!
Ich habe folgenden mysql Code, aber irgendwie habe ich einen Bug drin und komme nicht drauf wo.

Code:
SELECT sum(einsatz), sum(bilanz) ,date_format(wettabgabe,'%m') as monat, wettabgabe FROM `mybb_bets` WHERE correct is not null and `user_id`=1
and date_sub(date_format(curdate(), '%Y-%m-01'),interval 1 Month) <= wettabgabe AND date_sub(date_format(curdate(), '%Y-%m-31'),interval 1 Month) >= wettabgabe

group by monat order by wettabgabe DESC limit 2

Und zwar möchte ich die Daten haben vom 01.03.2010 - 31.03.2010, nächsten Monat soll er mit dann die Daten vom 01.04.2010 - 30.04.2010 liefern.

Zur Zeit liefert mir der SQL Befehl ein leeres Result. Lasse ich das AND date_sub(date_format(curdate(), '%Y-%m-31'),interval 1 Month) >= wettabgabe weg, dann bekomme ich Daten für März 2010 und April 2010. Wo ist mein Fehler?
Zitieren
#2
Das sieht kompliziert aus... Ich kann dir da leider nicht helfen.
[Bild: banner.png]

Bitte die Foren-Regeln beachten und im Profil die verwendete MyBB-Version angeben.
Zitieren
#3
Vielleicht denke ich auch nur kompliziert. Man kennt das ja, wenn man einen Gedankenpfad eingeschlagen hat.
Wie würdest du es denn machen um an die daten vom 01.03. bis 31.03. zu kommen in mysql?
Zitieren
#4
Ich baue so etwas lieber mit PHP... So spezielle Funktionen habe ich mit MySQL noch nicht benutzt.
[Bild: banner.png]

Bitte die Foren-Regeln beachten und im Profil die verwendete MyBB-Version angeben.
Zitieren
#5
Achso, dachte das sei einfacher in MYSQL direkt zu machen, statt erst alle Daten raus zusuchen und dann in PHP das alles zu sortieren.
Zitieren
#6
Ich meine solche Konstruktionen: date_sub(date_format(curdate(), '%Y-%m-01'),interval 1 Month) Wink
[Bild: banner.png]

Bitte die Foren-Regeln beachten und im Profil die verwendete MyBB-Version angeben.
Zitieren
#7
Achso, naja das kann man ach in PHP machen ist ach klar.
Dann habe ich aber auch das Problem, wie komme ich auf 1.3. - 31.3. und dann 1.4-30.4
Kann das ja dann ersetzen.
und schreiben $datum_php_beginn < wettabgabe_mysql and $datum_php_ende > wettabgabe_mysql
Zitieren
#8
Den letzten Tag eines Monats bekommst du mit LAST_DAY

wettabgabe >= date_format(now(), '%Y-%m-01') AND wettabgabe <= LAST_DAY(now())

sollte dann wettabgaben zwischen dem Monatsersten und dem Monatsletzten liefern

Ungetestet und ohne Gewähr, da ich auhc nicht weiß wie die Tabelle bei dir überhaupt aufgebaut ist

das now() bzw. curdate und damit auch date-format würde ich eh rauswerfen, sollte unnötig sein, bzw. du solltest beim Seitenaufbau ja eh wissen bzw. ausgeben können welches Jahr / Monat gefragt ist / angezeigt wird.
Zitieren