Hallo Forum,
ich stehe vor einem Problem an dem ich mir die Zähne ausbeiße.
In einer Tabelle stehen Geburtsdaten der Feldtyp ist int(11).
Im PHP das ausgelesene Geburtsdatum zu verarbeiten ist ja kein Problem.
Ich möchte aber unterschiedliche Altersgruppen abfragen und die Einträge mit listView zeigen.
Da die Einträge in der Tabelle auch negative Zeitstempel erhalten scheint mir eine Abfrage unmöglich bzw.ich komme nicht weiter.
Beispiel aus der tabelle: birthday= -100054800
Meine Abfrage:
SELECT tx_members.* FROM tx_members WHERE pid IN (505)
AND tx_members.deleted=0 AND tx_members.hidden=0 AND FLOOR(((CURDATE() + 0) - DATE_ADD("1970-01-01",INTERVAL birthday SECOND)) / 10000 )
> 41
das Datum ist der 31.10.1966
Ich bekomme keine Ausgabe
Kann mir jemand helfen?
Das ist der Ausdruck den du prüfen willst:
DATEDIFF(CURDATE(), DATE_ADD("1970-01-01",INTERVAL birthday SECOND)) > 41
Das funktioniert nicht.
Ich bekomme damit alle Altersgruppen ausgegeben.🙁
Ich habe jetzt diese Abfrage um mal die Daten zu testen
SELECT CURDATE( ) , DATE_FORMAT( DATE_ADD( FROM_UNIXTIME( 0 ) , INTERVAL birthday
SECOND ) , "%Y-%m-%d" ) AS geburtsdatum
FROM tx_members
Als Ausgabe erscheint für CURDATE das aktuelle Datum und das Geburtsdatum lesbar in der anderen Spalte.
Mit dieser Abfrage
SELECT tx_mgmembers_members.* FROM tx_mgmembers_members WHERE pid IN (505)
AND tx_mgmembers_members.deleted=0 AND tx_mgmembers_members.hidden=0 AND DATEDIFF(CURDATE(), DATE_FORMAT( DATE_ADD( FROM_UNIXTIME( 0 ) , INTERVAL birthday
SECOND ) , "%Y-%m-%d" )) > 41
erhalte ich alle Datensätze aus der Tabelle.
Benutze ich diese Abfrage
SELECT DATEDIFF( CURDATE( ) , DATE_FORMAT( DATE_ADD( FROM_UNIXTIME( 0 ) , INTERVAL birthday
SECOND ) , "%Y-%m-%d" ) ) AS diff
FROM tx_members
erhalte ich Ergebnisse wie diese
16829
4673
4594
Klar, daß diese alle größer sind als 41 und ich alle Datensätze bekomme.
Muß die Differenz der beiden Daten noch durch irgendwas geteilt werden?
Jetzt habe ich es😃
Die Differenz durch 365 Tage Teilen und dann habe ich die richtige Ausgabe:
SELECT * FROM tx_members WHERE pid IN (505)
AND tx_members.deleted=0 AND tx__members.hidden=0 AND DATEDIFF(CURDATE(), DATE_FORMAT( DATE_ADD( FROM_UNIXTIME( 0 ) , INTERVAL birthday
SECOND ) , "%Y-%m-%d" )) /366 > 41