Inhalt
Mai 2011
Beitrag1492
BeitragGeburtstagsstress
April 2011
Beitrag61147 Nummer 2: Zusammenführen, Mischen, Verbinden
BeitragMühle
BeitragDie Entwickler-Ecke und Spamlisten
März 2011
BeitragServerupdate
Februar 2011
Beitrag61147 Nummer 1: jQuery
Beitrag61147 oder: Wir leben noch!
Dezember 2009
BeitragAGS 2009 - Behind the Scenes
August 2009
BeitragSturmfrei - EE-Teamtreffen
April 2009
BeitragRoadmap für die Forensoftware
Januar 2009
BeitragProfil-Sucht
September 2008
BeitragUpdates: Mehr, aber kleiner
Juli 2008
BeitragErster! Oder: In fünf Monaten ist Weihnachten.
Mai 2008
BeitragKinder, wie die Zeit vergeht...
April 2008
BeitragDer Serverumzug und das liebe Geld...
März 2008
BeitragVon "Hey, wo ist meine Änderung geblieben?" zu Subversion
BeitragMono, Baby, Mono!
Dezember 2007
Beitrag172800000
November 2007
BeitragAdventsgewinnspiel 2007
Juli 2007
BeitragDas Jubiläumsgewinnspiel
BeitragStatusbericht zum neuen Server
Juni 2007
Beitrag8 Std. Downtime heute nacht
BeitragOh Gott, bitte nicht noch ein Browser ...
BeitragAb jetzt haben wir eine Projektverwaltung :-)
Mai 2007
BeitragDowntime am Freitag Abend
April 2007
BeitragDelphi Tage 2007
BeitragVorspiel
BeitragVorfreude
März 2007
BeitragPolitik im Off Topic
Beitragein sehr leeres Forum...
BeitragDie Jagd auf Spammer
Januar 2007
BeitragBackporting
Dezember 2006
BeitragDas Adventsgewinnspiel 2006
BeitragDie nächste Auskopplung
 
Sitemap
Ein Blog-Eintrag von Christian S. (Di 24.05.11 21:46)
Views: 814970
Hallo!

Dass man wegen Geburtstagen Stress hat, kommt ja vor. Entweder man hat sie vergessen oder man hat sie ganz knapp nicht vergessen und müht sich ab, ein Geschenk zu finden.

Den etwas anderes Stress macht es, wenn man rauszufinden versucht, wer in diesem Forum am aktuellen Tag Geburtstag hat. Bis vor wenigen Wochen sah unsere Lösung dafür so aus:

ausblenden SQL-Anweisung
1:
2:
3:
SELECT user_id, username, user_birthday
FROM users
WHERE user_birthday <> 1 AND DATE_FORMAT(FROM_UNIXTIME(user_birthday), '%m%d') = '$now'

wobei $now das Format "md" hatte, also wie die linke Seite in der SQL-Anweisung.

Das Problem: MySQL untertsützt bei FROM_UNIXTIME keinen negativen Werte :shock: Mit anderen Worten: Wer zu alt war, fiel durchs Raster.

Hier konnte man nun eine Lösung finden, bei der zu alte Leute auch berücksichtig werden können. Soweit, so gut.

Dummerweise funktioniert diese Lösung anscheinend nicht bei Leuten, die zu jung sind, denen wir zu früh gratuliert. :autsch:

Ehrlich gesagt habe ich noch nicht verstanden, warum das passiert, aber ab einem Geburtsjahr aum 1989 rum (genau ausprobiert, ab wann es passiert, habe ich noch nicht) liefert die verlinkte Lösung auch Personen, die erst einen Tag später Geburstags hätten.

In der Hoffnung, nun alle Fälle abgedeckt zu haben, sieht die aktuelle Lösung daher so aus:
ausblenden SQL-Anweisung
1:
SELECT user_id, username, user_birthday FROM users WHERE (user_birthday < 0 AND DATE_FORMAT(DATE_ADD(FROM_UNIXTIME(0), INTERVAL user_birthday SECOND), '%m%d') = '$now'OR (user_birthday > 1 AND DATE_FORMAT(FROM_UNIXTIME(user_birthday), '%m%d') = '$now')					


Ein Hoch auf MySQL ... ich brauch 'n Bier.

Christian

P.S.: Ich habe die Lösung noch nicht eingecheckt, vielleicht meldet sich hier ja jemand, der 'ne bessere Idee hat :-)
BeitragKommentar von Martok (Mi 25.05.11 14:36)
*meld*

Oder, sagen wir mal so, ich weiß woran es liegt. Hier kollidieren so viele Zeitzonenlose-/behaftete Datentypen, dass MySQL durcheinander kommt. Kann man ihm nicht verdenken, ich auch. Jedenfalls nachdem ich jetzt weiß, dass FROM_UNIXTIME eigentlich auf TIMESTAMPs arbeitet. Alle andern beteiligten ignorieren das Thema - unter anderem auch DATE_ADD, weil eben user_birthday UnixTime und damit UTC ist und man das so behandeln muss.

Sehr lustig ist dann ja auch der Grund, wie die "Altersgrenze" um 1990 rum zustande kommt: die meißten jüngeren haben sich als Schüler hier angemeldet. Sowas passiert meistens kurz vor Arbeiten und damit fast immer in der Normal(nicht-Sommer-)Zeit ;)

Wo kommt überhaupt diese seltsame Datenstruktur her? Ein Nullable-DATE-Wert wäre doch viel schöner... Und springt nicht munter mit der Sommerzeit durch die Gegend.
Nur die Migration wäre etwas hässlich, irgendwas à la "Ein paar Stunden addieren und den Datumswert davon nehmen".
BeitragKommentar von Regan (Mi 25.05.11 15:35)
*meld*

Warum nehmt ihr Software, deren Support vor über zwei Jahren geendet hat?
BeitragKommentar von Narses (Mi 25.05.11 17:05)
@Regan: Wir supporten doch die Software, ich weiß gar nicht, was du willst... :mrgreen:
BeitragKommentar von Regan (Mi 25.05.11 17:16)
@Narses: Dann solltet ihr auch die Verantwortung tragen. Stattdessen wird mir Diskriminierung vorgeworfen :evil:
BeitragKommentar von Yogu (So 01.04.12 22:02)
Ich bin mal gespannt, wann sich der erste, der am 1. Januar 1970 Geburtstag hat, beschwert, dass er keine PN erhält :mrgreen: