• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Was gibt es Schöneres als den Mai draußen in der Natur mit allen Sinnen zu genießen? Lasst uns teilhaben an Euren Erlebnissen und macht mit beim Thema des Monats Da blüht uns was! ---> Klick

knifflige MySQL abfrage

velti

Jonagold
Registriert
27.09.06
Beiträge
22
mein problem in kurzformat:
meine seite läuft auf PHP/mysql basis und ich möchte alle benutzer aus der user tabelle ziehen die in den nächsten X tagen geburtstag haben, dazu hab ich bis jetzt folgende abfrage:

SELECT
ID,
nick,
Geburtstag
FROM
users
WHERE
CONCAT(
YEAR(CURDATE()) ,
DATE_FORMAT( Geburtstag, '-%m-%d' )
) BETWEEN
CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 300 DAY)
ORDER BY Geburtstag ASC;

dabei gibt es jedoch das problem, dass nur die benutzer ausgelesen werden die bis zum jahresende geb haben. also über die jahreswende hinweg gehts nicht.

weiß jemand eine lösung? (ich möchte nicht per for schleife X mysql abfragen starten, das wär ganz schön serverlastig.)
 

b0rsten

Gast
wie sieht dein feld Geburtstag aus? is das ein unix_timestamp? wenn ja...
Code:
<?php
$x = 3; # innerhalb der nächsten drei tage
$y = 5; # anzahl der user
$time = time() + ($x * (60*60*24));
$sql = mysql_query("SELECT * FROM users WHERE Geburtstag < '" . $time . "' ORDER BY Geburtstag DESC LIMIT " . $y);
?>
ungetestet ^
 

csharp

Gast
SELECT id, nick, Geburtstag
FROM users
WHERE Geburtstag
BETWEEN CURDATE( )
AND DATE_ADD( CURDATE( ) , INTERVAL 300
DAY )
ORDER BY geburtstag ASC

Dein Concat war erstens falsch und zweitens unnötig ;)
 

velti

Jonagold
Registriert
27.09.06
Beiträge
22
das feld ist im date format...

danke csharp, ich teste es mal :)

hmm, ich seh grad das kann nich klappen: mit der abfrage sucht der nach geburtsdaten in den nächsten X tagen. hab aber leider keine benutzer die noch nicht geboren sind ;)
 

csharp

Gast
Haha habs natürlich getestet jedoch alle Geburtsdaten in die Zukunft gesetzt, zu geil ;-=)